solr上的多个单词查询

时间:2012-02-27 03:43:24

标签: solr

  • 我正在使用示例文件夹开箱即用的solr 3.3.0
  • solrQueryParser defaultOperator =“OR”

我的问题是,当我搜索多个单词短语时,Solr似乎没有返回好的结果。

以下搜索未返回任何结果。

  1. http://localhost:8080/solr/select/?q=roof+fixing
  2. 然而,当我搜索屋顶修复时,它们都会返回一些好结果。

    1. http://localhost:8080/solr/select/?q=roof 返回4个结果
    2. http://localhost:8080/solr/select/?q=fixing 返回3个结果
    3. 在查询“屋顶修复”时,我希望solr返回7个结果。 屋顶的4条记录和修复的3条记录。

      是否需要进行任何特殊配置?

2 个答案:

答案 0 :(得分:9)

您刚刚错误地表达了您的查询。

从管理页面尝试以下查询:

(屋顶或固定)

或者,如果你想在特定领域找到它:

fieldname :(屋顶或修理)

当您向SOLR提供类似“屋顶修复”的查询时,您实际上要求所有在默认字段中具有“屋顶”和“修复”的文档(或默认的dismax字段集。更改含义的唯一方法是重写用户输入的查询。这就是我们的工作,但规模更大。我们有一个前端界面,提供了一大堆选项,并从中生成一个SOLR查询。人们可以输入搜索词一个特定的字段,如果有多个单词并且没有引用,我们添加AND。然后我们将所有填写的字段一起OR。有些字段是特殊的,有一个MIN和MAX版本,我们将其转换为范围查询:[0 TO 125000]。还有一些下拉菜单支持多项选择,我们也将其变为OR,例如State:("WA" OR "CA" OR "OR" OR "NV")

答案 1 :(得分:0)

Solr不一定会为“屋顶或固定”返回7个结果,因为一个结果可能包括 “roof”和“fix”。假设“屋顶”有3个结果,“固定”有4个,但“屋顶”和“固定”都出现在2个结果中。搜索“屋顶或修复”时,您将只获得5个结果,因为Solr不会返回重复结果。

您是否尝试使用网址编码的空格(“%20”)而不是“+”符号?如果默认运算符为OR,则不需要包含该运算符。