Sphinx 斯芬克斯搜索相关性问题

Sphinx 斯芬克斯搜索相关性问题,sphinx,thinking-sphinx,Sphinx,Thinking Sphinx,我从movie表中为以下列编制了索引:movie_名称,作为文本的语言。我还将“流行度”列作为属性,因此基本上示例记录如下所示: movie_name: "The French Kiss" languages: "English French" '@languages "French English"', order: "@relevance DESC, popularity DESC" 我想做的是搜索有法语和英语语言的电影,根据相关性对它们进行排序,这样包含这两种语言的电影会排名更高,然后

我从movie表中为以下列编制了索引:movie_名称,作为文本的语言。我还将“流行度”列作为属性,因此基本上示例记录如下所示:

movie_name: "The French Kiss"
languages: "English French"
'@languages "French English"', order: "@relevance DESC, popularity DESC"
我想做的是搜索有法语和英语语言的电影,根据相关性对它们进行排序,这样包含这两种语言的电影会排名更高,然后受欢迎。我正在使用Thinking Sphinx gem,但我的查询基本上如下所示:

movie_name: "The French Kiss"
languages: "English French"
'@languages "French English"', order: "@relevance DESC, popularity DESC"
现在的问题是,有法语语言和电影名称的电影排名更高,尽管它们的受欢迎程度较低。现在我明白了这一点,因为在电影文档中有两次出现法语,电影名称和语言

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


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

了解狮身人面像排名细节的人可能会提供更多帮助,但有一件事值得尝试,那就是在这两个领域都设置权重,并且语言或电影名称的排名明显更高?不过,我不确定这是否会让你完全明白你想要什么。

我最后使用了一点技巧:我现在使用的不是语言名称,而是索引为字符串的语言ID。例如,英语法语将变成10000001 10000002,其中10000001是英语的id,10000002是法语的id

如果有人有更好的解决方案,我会很乐意的