无法在Solr 3.6上设置默认查询运算符。*

时间:2016-06-21 15:48:45

标签: solr

我在使用edismax解析器(q.op = OR)将Solr 3.6.1上的默认运算符设置为OR时遇到问题

我在solr版本4.10.4和3.6.1中有相同的集合

我在4.10.4中搜索:pascal fubar,其中fubar这个词在任何文档中都不会出现。查看调试信息,我看到:

"parsedquery_toString": "+((name:maxtor) (name:fubar))",

这匹配了许多文档(其中包含pascal的文档)。

我在3.6.1 solr上执行相同的搜索,并查看:

http://localhost:8983/solr/select?q=maxtor+fubar&wt=json&indent=true&debugQuery=true&defType=edismax&stopwords=true&lowercaseOperators=true&q.op=OR

+(((name:maxtor) (name:fubar))~2)

基本上说fubar和pascal必须在2个位置内发生。所以这匹配零文档。

查询:pascal或fubar有效。

有没有人知道为什么~2被添加到查询中?请注意,我采用了标准的4.10.4 solr配置,并将我的3.6.1配置中的搜索处理程序合并,因此它们不是100%完全相同。

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题,因为有人可能会遇到同样的问题,这似乎是3.6+和早期4. * dismax和edismax解析器的一个功能(bug)。这个答案给出了一些解释

Changing the default operator from OR to AND in Solr (Magento Enterprise)

似乎与此问题有关

https://issues.apache.org/jira/browse/SOLR-2649

无论如何,我试过的4.10.4版本solr并没有以同样的方式运行。

解决方案是给我们一个必须匹配的参数1为OR行为

&mm=1

希望这对某人有所帮助,因为我花了很长时间进行调试。