我向用户显示了一些推荐产品,如果用户忽略了列表中产品不应出现在结果中的任何产品。但在我的情况下,忽略结果出现,剩下的无人值守的休息时间消失了
下面是我的代码:
MATCH('@!objectid (%s)' % '|'.join(ids_str))
的!在字段选择器上意味着搜索除该字段之外的所有字段。即@!
的意思是'忽视字段'。 (@
本身就是唯一的领域)
因此,您的查询正在寻找除objectid之外的任何字段中的任何ID。
可能想要
MATCH('@objectid -(%s)' % '|'.join(ids_str))
否定关键词,而不是字段!
虽然sphinx不喜欢运行仅包含否定关键字的查询,但可能还需要其他内容。另一个匹配所有文档的关键字。
有点像
MATCH('the @objectid -(%s)' % '|'.join(ids_str))
在大多数文件中可能包含the
。但要确保全部捕获,可能需要一些其他合成价值,您可以保证在每个文件中! (如果你没有其他一些关键词来匹配!)