我使用solr按名称搜索一组数据(例如:"丹"或"乔·史密斯")。我想以另一个索引字段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>
如果我删除评论,那么搜索确实工作s.t.我所做的任何查询都被q.alt替换,然后由double_score的值增强。如果这没有取代q.alt,这将是期望的效果。
还请注意,虽然我还没有深入研究更有趣的可能性,例如标记名称,但我确实计划这样做。所以任何可能的建议/解决方案都不应该排除这一点。
我觉得你把它弄得太复杂了…试试这个:
<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>
Try
http://localhost:8983/solr/select/?q=Joe Smith&qf=double_score^1.2 description
这意味着:
- 我在找Joe Smith
- 我正在搜索双分数和描述
其中description将是存储要搜索的文本的字段。
确保description具有数据类型text,带
stored="true" (in case you want to return snippets)
indexed="true" (so it is searchable)
文本数据类型使用过滤技术(词干提取、标记化),而字符串数据类型则这样处理它。参见如何确定SOLR索引的字段类型?