4.2.布尔查询语法

优质
小牛编辑
134浏览
2023-12-01

布尔查询允许使用下列特殊操作符:

  • 显式的与(AND)操作符:
    hello & world
  • 或(OR)操作符:
    hello | world
  • 非(NOT)操作符:
    hello -world
    hello !world
  • 分组(grouping):
    ( hello world )

以下是一个使用了如上全部操作符的例子:

Example5.布尔查询示例

( cat -dog ) | ( cat -mouse)


与(AND)操作符为默认操作,所以“hello world”其实就是“hello & world”

或(OR)操作符的优先级高于与操作符,因此“lookingfor cat | dog | mouse”意思是"looking for ( cat | dog | mouse )" 而不是"(looking for cat) | dog | mouse"

像“-dog”这种查询不能被执行,因为它差不多包括索引所有文档。这既有技术上的原因,也有性能上的原因。从技术上说,Sphinx并不总是保持一个全部文档ID的列表。性能方面,当文档集非常大的时候(即10-100M个文档),对这种执行查询可能需要很长的时间。