我从电影表中索引了以下列:movie_name,languages (作为文本)。我还将popularity列作为属性,因此基本上有一个示例记录如下:
movie_name: "The French Kiss"
languages: "English French"我想做的是搜索有法语和英语语言的电影,根据相关性对它们进行排序(这样包含两种语言的电影就会排得更高),然后再受欢迎。我正在使用Thinking Sphinx,但基本上我的查询如下:
'@languages "French English"', order: "@relevance DESC, popularity DESC"现在的问题是,在语言和电影名称上都有法语的电影排名较高,尽管它们的受欢迎程度较低。现在我明白了,这是因为电影文档中出现了两个“法语”,一个是movie_name,另一个是语言。
我尝试过将排序算法更改为bm25 (不考虑关键字的出现),但它仍然返回相同的结果。
如何更改查询,使其首先返回符合“法语和英语”语言的电影,然后根据受欢迎程度排序,然后只返回法语和英语。任何帮助都将不胜感激。谢谢!
发布于 2013-07-25 23:28:53
最后,我使用了一些黑客:现在我不再使用语言名称,而是使用作为字符串索引的语言ids。例如,“英语法语”将变成"10000001 10000002“,其中10000001是英文的id,10000002是法语的id。
如果有人有更好的解决方案,我很乐意。
发布于 2013-07-12 09:48:13
了解狮身人面像排名更精细点的人可能会有更多的帮助,但值得尝试的一件事是,在这两个领域中都有字段权重,而且语言或电影名称都排得很高吗?但我不确定这会不会让你得到你想要的东西。
https://stackoverflow.com/questions/17588519
复制相似问题