Dismax请求处理程序

时间:2011-09-15 14:05:12

标签: solr dismax edismax

我正在使用solr按名称搜索一组数据(例如“Dan”或“Joe Smith”)。我想按照另一个索引字段double_score(例如10.0或72.3)指定的顺序返回查询指定的结果(编辑:末尾带有通配符)。我目前有以下内容无法正常工作:

<!-- Note that the default search is on the field name -->
<requestHandler name="/scoresearch" class="solr.SearchHandler" default="true">
   <!-- <lst name="invariants">
          <str name="q">{!boost b=sum(double_score) defType=dismax v=$qq}</str>
        </lst> -->
        <lst name="defaults">
          <str name="defType">dismax</str>    
          <str name="echoParams">explicit</str>
      <int name="rows">10</int>
     <!-- <str name="qq"></str> -->
      <str name="qf">double_score</str>
      <str name="debug">true</str>
      <str name="q.alt">*:*</str>
    </lst>
</requestHandler>

如果我删除了评论,那么搜索确实有效。我所做的任何查询都被q.alt取代,然后被double_score的值提升。如果这不能取代q.alt,那将是理想的效果。

另请注意,虽然我还没有深入研究更多有趣的可能性,例如标记名称,但我确实计划这样做。所以任何可能的建议/解决方案都不应排除这种情况。

2 个答案:

答案 0 :(得分:1)

我认为你过度复杂了......试试这个:

<lst name="defaults">
    <str name="defType">edismax</str>
    <str name="qf">name</str>
    <str name="q.alt">*:*</str>
    <str name="bf">double_score</str>
</lst>

答案 1 :(得分:0)

尝试

http://localhost:8983/solr/select/?q=Joe Smith&qf=double_score^1.2 description

表示:

  1. 我正在寻找 Joe Smith
  2. 我正在搜索字段 double-score description
  3. 其中 description 将是您要存储要搜索的文本的字段。

    确保 description 的数据类型为 text

    stored="true" (in case you want to return snippets)
    indexed="true" (so it is searchable)
    

    text数据类型使用过滤器技术(词干化,标记化),而字符串数据类型则按此处理。见How to determine field-type for SOLR indexing?