我正在向用户显示一些推荐的产品,如果用户忽略了列表中的任何产品,则该产品不应出现在结果中。但是在我看来,忽略结果出现了,其余的其余部分消失了
下面是我的代码:
MATCH('@!objectid (%s)' % '|'.join(ids_str))
答案 0 :(得分:1)
!在字段选择器上的含义是搜索除该字段之外的所有字段。即@!
的意思是“忽略字段”。 (@
本身是唯一字段)
因此,您的查询正在查找对象 other 之外的任何字段中的任何id。
可能想要
MATCH('@objectid -(%s)' % '|'.join(ids_str))
要否定关键字,而不是字段!
尽管狮身人面像不喜欢使用qieries,而且仅包含否定关键字,因此可能还需要其他内容。与所有文档匹配的另一个关键字。
喜欢金达
MATCH('the @objectid -(%s)' % '|'.join(ids_str))
在大多数文档中可能包含the
。但是要确保全部捕获,可能需要一些其他综合值,您可以保证在每个文件中! (如果您没有其他匹配的关键字!)