我的SOLR索引歌曲对象属于更高级别的专辑对象。示例如下所示:
<song>
<album title>Blood Sugar Sex Magic</album title>
<song title>Under the Bridge</song title>
<description>A sad song about junkies</description>
</song>
目前我可以做的是在专辑标题上创建一个方面,这样搜索歌曲也会显示哪些专辑包含该关键字的匹配。
SOLR的默认行为是facet按照大多数命中的顺序显示。然而,我想要实现的是根据该专辑的最高点击的相关性对要素列表进行排序。
例如,对“悲伤”这个词的搜索可能会显示“Blood Sugar Sex Magic”的一个方面,并且可能还有一张名为“Sad Clown songs”的专辑,其中有10个点击。 “悲伤的小丑歌曲”将显示为第一个方面,即使它可能是“在桥下”作为最相关的歌曲。
我的问题是如何才能获得所有方面,然后根据其中歌曲的相关性对它们进行排序?如果我需要更改或扩展一些基础SOLR代码那会是什么?
提前致谢。
答案 0 :(得分:3)
Solr只能按字典顺序或按计数对面进行排序(请参阅facet.sort parameter)。
如果你想实现不同的排序顺序,我将从SimpleFacets class开始。
答案 1 :(得分:1)
最后,我们决定了最简单的方法,无需修改SOLR源代码,就是查询solr,请求facet然后迭代结果。
不理想,但现在有效。
答案 2 :(得分:0)
如果您提到专辑标题,则可以使用Edismax来执行搜索查询,并使用结果分组对特定字段进行分组。
https://lucene.apache.org/solr/guide/7_0/result-grouping.html
https://lucene.apache.org/solr/guide/7_0/the-extended-dismax-query-parser.html