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

Use exact search with OR operator inside Sphinx query

sphinx 扩展语法可以提供不同的搜索选项。

是否可以混合使用它们并构建这样的查询:

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

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

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

但我计划使用很多内部有很多选项的 OR 组,扩展这个查询最终会得到一个巨大的。

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

不,不可能在 短语运算符 中使用 'OR'(强制相邻词的 " 周围的词)- 专有名称对于你所说的 'exact match'。

唉,没有另一个组合的 'strict order' 运算符和 'near'(即没有 'just before' 运算符)。所以你被迫同时使用两者,所以像

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

哪个更简单,更复杂!需要中间的 NEAR/3 来确保您匹配文档中的相同句子(否则会出现误报的边缘情况)。


如果您有很多这样的 'OR' 列表,一个离奇的想法是不要在查询中实现它们,而是使用 wordforms。缺点是你需要提前知道它们(即编译到索引中)并且 'opting out' 比较复杂。