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

问题描述 投票:0回答:1

我向用户显示了一些推荐产品,如果用户忽略了列表中产品不应出现在结果中的任何产品。但在我的情况下,忽略结果出现,剩下的无人值守的休息时间消失了

下面是我的代码:

MATCH('@!objectid (%s)' % '|'.join(ids_str))
python sphinx
1个回答
1
投票

的!在字段选择器上意味着搜索除该字段之外的所有字段。即@!的意思是'忽视字段'。 (@本身就是唯一的领域)

因此,您的查询正在寻找除objectid之外的任何字段中的任何ID。

可能想要

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

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


虽然sphinx不喜欢运行仅包含否定关键字的查询,但可能还需要其他内容。另一个匹配所有文档的关键字。

有点像

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

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

© www.soinside.com 2019 - 2024. All rights reserved.