Lucene查询语法

语法关键字: + - &$ || ! () {} [] ^ " ~ * ? : \

查询 Term

  • 单一查询词,eg:"hello"
  • 词组 phrase,eg:"hello world"

查询 Field

使用域名和关键字::仅对紧跟其后的查询词其作用,或者用"引起来。
eg: title:"just do it"

通配符 Wildcard

?: 表示单个字符。
*: 表示多个字符。
通配符不能出现在查询词的开始。
eg: te?ttest*

模糊查询 Fuzzy

模糊查询时基于 Levenshtein Distance 编辑距离,当两个词的差别小于某个比例时,就算匹配。
eg: helol~0.8,表示差别小于 0.2,相似度大于 0.8 才算匹配。

临近查询 Proximity

词组后面紧跟~n,表示词组中的多个词之间的局里之和不超过 n,则满足查询。
词间距离,即词组中词为了和目标词相同所需的最小移动次数。
eg: 索引中的词组apple boy cat,查询为"boy apple cat"~2可以匹配,但是"boy apple cat"~1则不能匹配。

区间查询 Range

分为包含边界[A TO B]和不包含边界{A TO B}

增加 Term 权重 Boost

通过在词的后面使用^n来设定词的权重,默认是 1。

布尔操作

AND OR NOT+ -