在 Sphinx 中对订单运算符使用 NOT 内部查询

Using NOT inside queries with order operators in Sphinx

我正在尝试按特定顺序查询 TermA 和 TermB

TermA << TermB

还是句子

TermA SENTENCE TermB

但只有当它们之间没有出现特定单词时才需要它们

TermA -(NOT1 | NOT2 | NOT3) << TermB

但是我收到错误 "NOT cannot be used as before operand"

本质上是在寻找

TermA (-A | -B | -C) TermB

在句子内或给定的邻近度,例如

 (TermA (-A | -B | -C) TermB)~10

TermA SENTENCE (-A | -B | -C) SENTENCE TermB

但是我使用的任何组合都失败了。警告是我刚开始使用 Sphinx

最接近的可能是

(TermA -(NOT1 | NOT2 | NOT3)) << TermB

我认为应该 运行。

但可能会排除一些匹配项。例如,如果文档 simpley 包含 NOT1 anywhere 文档将不会匹配。

我已经提出了否定断言运算符,但没有任何结果 http://sphinxsearch.com/bugs/view.php?id=1259


也链接自该错误报告,是 sphinx 论坛上的原始主题 http://sphinxsearch.com/forum/view.html?id=9869 ...我确实讨论了我为该示例找到的解决方法。我认为同样的技巧可能对您有用,需要更多思考...