Lucene bool Query

解释

  • must: 子句(查询)必须出现在匹配的文档中,并将有助于得分。
  • filter: 子句(查询)必须出现在匹配的文档中。但是不像 must查询的分数将被忽略。Filter子句在[filter上下文]
  • should: 子句(查询)应出现在匹配的文档中。可以匹配,也可以不匹配,匹配的比不匹配的排名高,但是只有should,没有must的情况下必须匹配一个
  • must_not: 子句查询不得出现在匹配的文档中。子句在过滤上下文中执行,这意味着计分被忽略,并且子句被视为用于缓存。由于忽略计分,0因此将返回所有文档的分数。

查询前缀

  • must: 前缀+
  • must_not: 前缀-
  • should: 什么都不加
  • 和常见的bool :AND OR NOT 并不完全一样

如下例子

  • black +cat -dog
  • 翻译成bool查询: (cat OR (black and cat) AND NOT dog
  • 显然lucene的bool查询更简单

推荐阅读更多精彩内容