スペースで区切って単語を並べると AND と見なします.
「または」で検索したい場合は明示的に OR を書きます.
論理演算とグルーピング, 必須/禁止修飾子, フィールド指定, フレーズ検索, ワイルドカード検索, 単語とフレーズのファジー検索, レンジ検索, ブースト, 等々.
基本的に Lucene 標準のクエリ構文はすべて使えます.
/あいう?えお/ のようにスラッシュで囲むことで、正規表現を使ってワイルドカードのようにパターンでの検索ができます.
構文は /pattern/flags です. フラグは無くても構いません. フィールド指定やブーストを組み合わせることもできます.
使用可能なパターン表現とフラグはJava標準の正規表現と同様です.
例: /0x[a-f0-9]+/i^3 OR title:/\p{Alpha}{6,8}/
グルーピングで使う (...) の後に WITHIN <n> を加えることで、いわゆる NEAR 検索ができます.
例えば (sunny day) WITHIN 2 と書くと sunny と day の間が2語以内ならヒットします.
さらに、WITHIN <n> INORDER とすれば、 (...) に書いた順序どおり という条件を加えることができます.
また, WITHIN [<m> TO <n>] を加えると, m を先頭位置, n を末尾位置とした位置スパン検索ができます.
<m> <n> には * も使えます. その場合, m では 0, n では ∞ の意味になります.
例えば (example) WITHIN [* TO 4] とすると, 先頭 5 単語以内に example が現れる, という検索になります.
スパンの (...) の中では, ワイルドカードやファジー単語, 正規表現を使うこともできます.
対照的に, フレーズのファジー指定 "..."~n ではこれらは使用できません.
さらにスパン (...) の中にスパンを入れ子にしたり, OR や NOT でつなげたりもできます.
*:* のようにフィールドと値の両方をアスタリスクにすると, すべての文書にマッチするクエリを表現できます.
これは NOT などとの組み合わせで効果を発揮します.
旧来の Lucene 標準パーザでは 範囲の指定は 閉区間 [... TO ...] もしくは開区間 {... TO ...} でなければなりませんが,
このシステムでは半開区間 {... TO ...] または [... TO ...} も使えます.
Query = 1*Disjunction
Disjunction = Conjunction *( Or Conjunction )
Conjunction = Clause *( And Clause )
Clause = [ Modifier ] [ Field ] ( Term / Group ) [ Boost ]
Modifier = "+" / "-" / Not
Field = ( Word / "*" ) ":"
Group = "(" Query ")" [ Within ( Proximity / Position ) ]
Term = Single / Phrase / Range / WildCard / RegExp / "*"
Single = ( Word / Number ) [ Fuzzy ]
Phrase = DQUOTE *QuotedChar DQUOTE [ Fuzzy ]
Range = RangeStart RangeLimit [ To ] RangeLimit RangeEnd
RangeLimit = 1*< any UChar except WildCardChar or DQUOTE or "," or RangeEnd > / DQUOTE *QuotedChar DQUOTE / "*"
WildCard = TermStartChar *( TermChar / WildCardChar )
RegExp = "/" *RegExpChar "/" *( "i" / "d" / "m" / "s" / "u" / "x" / "C" / "L" )
Fuzzy = "~" Number
Boost = "^" Number
Proximity = Integer [ "INORDER" ]
Position = "[" ( Integer / "*" ) [ To ] ( Integer / "*" ) "]"
And = "AND" / "&&"
Or = "OR" / "||"
Not = "NOT" / "!"
Within = "WITHIN" / "~~"
To = "TO" / ","
RangeStart = "[" / "{"
RangeEnd = "]" / "}"
Word = TermStartChar *TermChar
Number = 1*DIGIT [ "." 1*DIGIT ]
Integer = 1*DIGIT
WildCardChar = "*" / "?"
SpaceChar = SP / HTAB / CR / LF / %x000B / %x000C / %x0085 / %x00A0 / %x1680 / %x180E
SpaceChar =/ %x2000-200D / %x2028 / %x2029 / %x202F / %x205F / %x2060 / %x2800 / %x3000 / %xFEFF
ReservedChar = "+" / "-" / "!" / "(" / ")" / ":" / "^" / "[" / "]" / "{" / "}" / DQUOTE / "~" / "\" / "/" / "@"
EscapedChar = "\" UChar
TermStartChar = < any UChar except ReservedChar or WildCardChar or SpaceChar > / EscapedChar
TermChar = TermStartChar / "+" / "-" / "/" / "@"
QuotedChar = < any UChar except DQUOTE or "\" > / EscapedChar
RegExpChar = < any UChar except "/" or "\" > / EscapedChar
UChar = %x000001-10FFFF
| フィールド名 | 説明 |
|---|---|
| uri | URI |
| mimetype | MIME タイプ |
| title | タイトル |
| author | 著者 |
| date.created | 作成日 |
| date.modified | 修正日 |
| keyword | キーワード |
| subject | 主題 |
| default | フィールドを省略した場合のデフォルト. 本文,タイトル,キーワードなどが含まれる. |
すべての文書にすべてのフィールドが登録されているわけではありません.