Lucene/Solr 意外的查询答案



我正在使用在Tomcat 7.0.29上运行的Solr 4.4.0。solrconfig.xlm 是按交付的(当然,Solr 主目录除外)。我可以传递架构.xml,尽管我怀疑这会有多大帮助,如下所示。

如果我选择文本中包含"俄罗斯"的所有文档,

这是默认字段,即如果我执行查询"俄罗斯",我只找到 1 个文档,这是正确的。

如果我选择文本中包含"web"("web")的所有文档,结果是 29,这也是正确的。

如果我搜索所有不包含"俄罗斯"("NOT(俄罗斯)")的文档,结果仍然是正确的(202)。

如果我搜索所有包含"web"但不包含"俄罗斯"("web AND NOT(russia)")的文档,结果再次是正确的(28,因为包含"俄罗斯"的文档也包含"web")。

但是,如果我搜索所有包含"web"或不包含"俄罗斯"("web OR NOT(俄罗斯)")的文档,结果仍然是 28,尽管我应该得到 203 个匹配项(整套)。

有人有解释吗?

有关信息,如果我不在查询中的某处使用 NOT,则 AND 和 OR 可以正常工作,即:"网络和俄罗斯" --> 好的"网络或俄罗斯" --> 确定

我从 Yonik Seeley 那里得到了一个解决方案,即将 NOT(俄罗斯)转换为 (*:* -russia),以便可以使用正值(:即所有文档)从 (-russia) 中减去。此解决方案效果很好。我仍然认为修改解析器是个好主意,以便 strainghtforward 请求"web OR NOT(俄罗斯)"无需翻译即可工作。

最新更新