スペースで区切って単語を並べると 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 | フィールドを省略した場合のデフォルト. 本文,タイトル,キーワードなどが含まれる. |
すべての文書にすべてのフィールドが登録されているわけではありません.