使用SOLR 4.0进行搜索并尝试短语查询时,我遇到了一个小问题。
我有一个名为"idx_text_general_ci"的字段,它是一个由所有字段组成的不区分大小写(全部小写)的字段。
当我尝试搜索短语(海洋装配工)时,我的SOLR拒绝搜索该短语,而是将该短语拆分为两个单词-
/select?defType=edismax&q=idx_text_general_ci:marine%20fitter&debugQuery=true
debugQuery=下面的真实输出:
<lst name="debug">
<str name="rawquerystring">idx_text_general_ci:marine fitter</str>
<str name="querystring">idx_text_general_ci:marine fitter</str>
<str name="parsedquery">
(+(idx_text_general_ci:marine DisjunctionMaxQuery((id:fitter))))/no_coord
</str>
<str name="parsedquery_toString">+(idx_text_general_ci:marine (id:fitter))</str>
正如您在上面看到的,它将查询分为两部分(idx_text_general_ci:marine,然后id:fatcher)。
我遇到的问题是,我在idx_text_general_ci字段中有一个与"海洋装配工"完全匹配的词,该词出现了两次,但它的排名得分低于"海洋"一词出现了三次的文档。我知道,如果我的SOLR按预期在字段中搜索短语,情况不会如此。
如果我用引号把短语括起来,我得到的结果为零。
如能提供任何帮助或推动我们朝着正确的方向前进,我们将不胜感激。
提前感谢
Alex
这里发生的情况是,您的默认查询字段显示为id
,并且因为您将查询指定为
idx_text_general_ci:marine fitter
它在Solr中被翻译为CCD_ 2和CCD_。大概您想要idx_text_general_ci:marine
和idx_text_general_ci:fitter
。您有两种选择:1)可以在每个单词前面加上正确的字段和冒号,也可以将schema.xml中的defaultSearchField更改为idx_text_general_ci
。
我很困惑,为什么当你把它用双引号括起来时,结果为零。但做以上的事情应该会对你有所帮助。