1

我已经从电影表中索引了以下列:movie_namelanguages(作为文本)。我也有popularity列作为属性所以基本上一个示例记录如下所示:

movie_name: "The French Kiss"
languages: "English French"

我想要做的是搜索具有法语和英语语言的电影,根据相关性对它们进行排序(因此包含两种语言的电影将排名更高)然后是受欢迎程度。我正在使用 Thinking Sphinx gem,但基本上我的查询如下所示:

'@languages "French English"', order: "@relevance DESC, popularity DESC"

现在的问题是,使用法语和电影名称的电影排名更高,尽管它们的受欢迎程度较低。现在我明白这是因为电影文档中出现了两次“法语”,电影名称和语言。

我尝试将排名算法更改为 bm25(不考虑关键字出现),但它仍然返回相同的结果。

如何更改查询,使其首先返回匹配“法语和英语”语言的电影,根据受欢迎程度排序,然后仅返回法语和仅英语。任何帮助,将不胜感激。谢谢!

4

2 回答 2

0

我最终使用了一些技巧:我现在不使用语言名称,而是使用索引为字符串的语言 ID。因此,例如,“English French”将变为“10000001 10000002”,其中 10000001 是英语的 id,10000002 是法语的 id。

如果有人有更好的解决方案,会喜欢它。

于 2013-07-25T23:28:53.640 回答
0

了解 Sphinx 排名更精细点的人可能会提供更多帮助,但值得尝试的一件事是在这两个领域都设置字段权重,并且语言或电影名称的排名明显更高?不知道这是否会让你得到你所追求的。

于 2013-07-12T09:48:13.710 回答