我正在使用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,那将是理想的效果。
另请注意,虽然我还没有深入研究更多有趣的可能性,例如标记名称,但我确实计划这样做。所以任何可能的建议/解决方案都不应排除这种情况。
答案 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
表示:
其中 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?