1. 程式人生 > >Lucene中Query語法樹的整理

Lucene中Query語法樹的整理

_NUM_CHAR::=["0"-"9"//數字_ESCAPED_CHAR::="//" [ "//""+""-""!""("")"":""^""[""]""/"""{""}""~""*""?" ] > //特殊字元,_TERM_START_CHAR ::=~"""/t""/n""/r""+""-""!""("")"":""^","[""]""/"""{""}""~""*""?" ] //TERM的起始字元,除了列出的其它字元都可以_TERM_CHAR::=<_TERM_START_CHAR
>|<_ESCAPED_CHAR>|"-"|"+" ) >//TERM可使用字元_WHITESPACE::= ( ""|"/t"|"/n"|"/r"//空格和回車,<DEFAULT> TOKEN:
 AND::
=("AND"|"&&")
 OR::
=("OR"|"||")
 NOT::
=("NOT"|"!")
 PLUS::
="+"
 MINUS::
="-"
 LPAREN::
="("
 RPAREN::
=")"
 COLON::
=":"
 STAR::
="*"
 CARAT::
="^"//後接Boost,原文<CARAT:     "^" > : Boost,後面Boost說明什麼沒明白
 QUOTED::="/"" (~["/""|"///"")+ "/""// 表示用"包起來的字串,字元"開始,中間由不是"的符號或者連著的這兩個符號/"組成,字元"結束, TERM::=<_TERM_START_CHAR> (<_TERM_CHAR>)*
 FUZZY_SLOP::
="~" ( (<_NUM_CHAR>)+ ( "." (<_NUM_CHAR>)+ )? )?//字元~開始,而後是數字.Lucene支援模糊查詢,例如"roam~"或"roam~0.8",The value is between 0 and 1,演算法為the Levenshtein Distance, or Edit Distance algorithm
 PREFIXTERM::=(<_TERM_START_CHAR>|"*") (<_TERM_CHAR>)*"*">//模糊查詢,表示以某某開頭的查詢, 字元表示為"something*",字首允許模糊符號*,中間可有字元也可沒有, 結尾必須是* WILDTERM::=(<_TERM_START_CHAR>| [ "*""?" ]) (<_TERM_CHAR>| ( [ "*""?" ] ))*>//類似上面,但同時支援?字元,結尾可以是字元也可以是* ?。使用[]表示or關係時,不需要使用|,只要,號分割即可 RANGEIN_START::="["//在RangeQuery中,[或{表示了是否包含邊界條件本身, 用字元表示為"[begin TO end]" 或者"{begin TO end}",後接RangeIn RANGEEX_START::="{"//同上,後接RangeEx<Boost> TOKEN:
 NUMBER::
=(<_NUM_CHAR>)+ ( "." (<_NUM_CHAR>)+ )?//後接DEFAULT, 整數或小數<RangeIn> TOKEN:
 RANGEIN_TO::
="TO"
 RANGEIN_END::
="]"//後接DEFAULT, RangIn的結束 RANGEIN_QUOTED::="/"" (~["/""|"///"")+ "/""//同上述QUOTED,表示用"包起來的字串, RANGEIN_GOOP::= (~"""]" ])+//1個或多個不是空格和]的符號,這樣就能提取出[]中的內容<RangeEx> TOKEN :
 RANGEEX_TO::
="TO">
 RANGEEX_END::
="}"//後接DEFAULT, RangeEx的結束 RANGEEX_QUOTED::="/"" (~["/""|"///"")+ "/""//同上述QUOTED,表示用"包起來的字串, RANGEEX_GOOP::=(~"""}" ])+//1個或多個不是空格和]的符號,這樣就能提取出[]中的內容<DEFAULT, RangeIn, RangeEx> SKIP : {
  
<<_WHITESPACE>>
//所有空格和回車被忽略