在Sphinx中使用带顺序运算符的非内部查询

在Sphinx中使用带顺序运算符的非内部查询,sphinx,Sphinx,我试图按特定顺序查询TermA和TermB TermA << TermB 但只有当他们之间没有特定的词语时,他们才会想要 TermA -(NOT1 | NOT2 | NOT3) << TermB 在句子内部或给定的接近范围内,例如 (TermA (-A | -B | -C) TermB)~10 或 但我使用的任何组合都失败了。注意,我只是从斯芬克斯开始,最近的可能是 (TermA -(NOT1 | NOT2 | NOT3)) << TermB (Te

我试图按特定顺序查询TermA和TermB

TermA << TermB
但只有当他们之间没有特定的词语时,他们才会想要

TermA -(NOT1 | NOT2 | NOT3) << TermB
在句子内部或给定的接近范围内,例如

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

但我使用的任何组合都失败了。注意,我只是从斯芬克斯开始,最近的可能是

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

(TermA-(NOT1 | NOT2 | NOT3))“文档中任何地方的NOT1”对我来说都是失败的。我阅读了论坛链接,感谢我现在的解决方案,因为我正在扫描文档,在术语中,我与NOT进行第二次传递,例如,我使用“Term1 Near/5 Term1”获取所有匹配项,然后使用“Term1(BadTerm1 | BadTermN)Term2”并排除第一个列表中与第二个匹配的任何项。这样做的问题是,您可能会排除有效的匹配项。您排除了确实包含坏词短语,但在其他地方仍有“ok”匹配项的文档。要正确操作,需要三个pass来查找包含匹配项和不包含匹配项的文档!嗯,那么你的意思是说如果我在/3餐厅附近(吃了)找火柴,然后在/3(-bad |-糟糕的)餐厅附近(吃了)找不到火柴?我看到的想法是交叉引用匹配两个过程的ID。如果你说其中一个“在我最喜欢的餐厅吃饭”和“在一家非常糟糕的餐厅吃饭”,那么3级考试怎么办?
 (TermA (-A | -B | -C) TermB)~10
TermA SENTENCE (-A | -B | -C) SENTENCE TermB
(TermA -(NOT1 | NOT2 | NOT3)) << TermB