0

我正在使用 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,这将是预期的效果。

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

4

2 回答 2

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>
于 2011-09-15T22:33:50.747 回答
0

尝试

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

意思是:

  1. 我在找乔·史密斯
  2. 我正在搜索字段双分描述

其中description将是您存储要搜索的文本的字段。

确保description具有数据类型text,与

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

文本数据类型使用过滤技术(词干、标记化),而字符串数据类型则按此方式处理。请参阅如何确定 SOLR 索引的字段类型?

于 2011-09-15T17:17:24.397 回答