我有两种类型的solr查询。一个使用EDisMax解析器,另一个使用标准查询解析器作为默认值。以下是我使用的2个查询。查询的目的是文档中不包含以下单词ELM,PST,June.
EDisMax查询
q= content:(-EML -PST -June)或contentenstem:(-EML -PST -June)&start=0&rows=25, defType = edismax& fl =内容文件名
产生大约12232个结果;其中4292个文档的结果包含EML或PST或June的任何给定查询字符串。所以4292个结果文档是错误的。
标准解析器查询
query:q=size:[0 TO *]&fq=content:(-EML -PST -June)&fq=contentenstem:(-EML -PST -June)&start=0&rows=25&fl=content文件名
它产生大约7940个结果。
为什么EDisMax查询失败;如何使用EDisMax解析器查询获得正确的结果
如果我们知道EDisMax和Standard查询解析器如何解析and &或者对文档进行布尔查询,我们可以得到为什么不同的解析器产生不同的文档计数的答案。
将EDisMax查询中的OR
改为AND
。OR
和AND
的作用不同:
OR
将导致满足您的一个或两个限制(对于content和contentstem)的结果。
AND
更严格:结果必须同时满足这两个限制