我有许多文档被索引到 Solr。我现在面临一个要求,搜索结果应该根据它们的scores
. 在不完全匹配的情况下,如果出现平局,则将对名为 的字段应用另一级别的排序priority
。
我在 django 1.4 中使用 solr 和 django-haystack。
我可以/应该做什么来达到我的要求?
我有许多文档被索引到 Solr。我现在面临一个要求,搜索结果应该根据它们的scores
. 在不完全匹配的情况下,如果出现平局,则将对名为 的字段应用另一级别的排序priority
。
我在 django 1.4 中使用 solr 和 django-haystack。
我可以/应该做什么来达到我的要求?
edismax 的提升可用于此目的。它适用于所有分数,但如果它是一个小值,它只会对平局或接近平局产生影响。基本分数的显着差异不会重新排序。
见:http ://wiki.apache.org/solr/ExtendedDisMax#boost_.28Boost_Function.2C_multiplicative.29
我不了解 django 或 django-haystack,但如果您想在 solr 中进行二次排序,只需将多个排序指定为逗号分隔列表。例子...
score desc, priority desc
...将按分数对文档进行排序,如果两个文档具有相同的分数,则将按优先级字段排序。
但是请注意,这只会为具有完全相同的分值的事物提供二次排序 - 您可能希望通过您的优先级字段“提高”文档的分数(即:实际影响分数,在排序之前) .