在Sphinx查询中使用OR运算符进行精确搜索

时间:2015-12-03 21:51:45

标签: sphinx

sphinx扩展语法有不同的搜索选项。

  • 确切搜索:"我喜欢吃#34; //将匹配精确短语
  • 或搜索:(吃|睡觉|梦想)

是否可以混合它们并构建类似的查询:

"I love to (eat|sleep|dream)"

我知道可以简化它并将OR条件拆分为不同的精确短语,例如:

"I love to eat" | "I love to sleep" | "I love to dream"

但是我计划在内部使用很多带有很多选项的OR组,并且扩展这个查询最终会有很大的选择。

那么可以在Sphinx中使用完全匹配语法中的OR语法吗?

1 个答案:

答案 0 :(得分:1)

不,不可能使用'或者'在短语运算符中(" s围绕强制相邻单词的单词) - 您呼叫的正确名称'完全匹配'。

唉,没有另一个合并的严格命令'运营商和'附近' (即没有'就在之前'运营商)。所以你被迫使用两者,所以像

("I love to" << (eat|sleep|dream)) NEAR/3 ("I love to" NEAR/1 (eat|sleep|dream))

哪个不简单,并且会争辩更复杂和复杂!中间的NEAR / 3需要确保匹配文档中的相同发送(否则存在误报的边缘情况)。

如果您有很多这样的问题,那么这个概念就是一个很好的想法。列表,而不是在查询中实现它们,而是使用字形。缺点是你需要提前知道它们(即汇编到索引中)并且选择退出&#39;更复杂。