如果匹配,Sphinx将忽略结果中的ID

时间:2019-04-17 13:11:48

标签: python sphinx

我正在向用户显示一些推荐的产品,如果用户忽略了列表中的任何产品,则该产品不应出现在结果中。但是在我看来,忽略结果出现了,其余的其余部分消失了

下面是我的代码:

MATCH('@!objectid (%s)' % '|'.join(ids_str))

1 个答案:

答案 0 :(得分:1)

!在字段选择器上的含义是搜索除该字段之外的所有字段。即@!的意思是“忽略字段”。 (@本身是唯一字段)

因此,您的查询正在查找对象 other 之外的任何字段中的任何id。

可能想要

MATCH('@objectid -(%s)' % '|'.join(ids_str))

要否定关键字,而不是字段!


尽管狮身人面像不喜欢使用qieries,而且仅包含否定关键字,因此可能还需要其他内容。与所有文档匹配的另一个关键字。

喜欢金达

MATCH('the @objectid -(%s)' % '|'.join(ids_str))

在大多数文档中可能包含the。但是要确保全部捕获,可能需要一些其他综合值,您可以保证在每个文件中! (如果您没有其他匹配的关键字!)