5

我的 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 的默认行为是分面按命中率从高到低的顺序显示。但是,我想要实现的是要根据该专辑的热门歌曲的相关性对方面列表进行排序。

例如,对“sad”一词的搜索可能会显示“Blood Sugar Sex Magic”的一首歌曲,并且可能还有一张名为“Sad Clown song”的专辑,其中有 10 首歌曲。“悲伤的小丑歌曲”将显示为第一个方面,尽管“桥下”可能是最相关的歌曲。

我的问题是,我怎样才能恢复所有方面,然后根据其中歌曲的相关性对它们进行排序?如果我需要更改或扩展一些底层 SOLR 代码,那会是什么?

提前致谢。

4

3 回答 3

3

Solr 只能按字典顺序或按计数对构面进行排序(请参阅facet.sort 参数)。

如果您想实现不同的排序顺序,我将从SimpleFacets 类开始。

于 2010-05-17T22:13:30.677 回答
1

最后,我们决定在不需要修改 SOLR 源代码的情况下执行此操作的最简单方法是查询 solr,询问构面,然后遍历结果。

不理想,但目前有效。

于 2010-06-18T15:45:22.700 回答
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

于 2019-01-31T16:11:28.493 回答