Sphinx:如何更改默认排名方法?

时间:2016-04-05 10:32:45

标签: elasticsearch full-text-search sphinx

我有电影表(movie_id,标题),一部电影可以有很多标题(不同的语言)。 我希望通过所有标题实现全文搜索,然后按日期排序具有相同相关性的电影。现在我正在使用sphinx并执行此操作:

sql_joined_field = all_movie_titles from query; select movie_id as id, title      from tbl_movie_titles order by movie_id

这是唯一用于搜索的字段 据我所知,通过这种方式,狮身人面像搜索匹配一个电影的每个标题中的关键字,但有些电影有2个标题,而另一个,例如,10。由于关键字经常在一部电影的不同标题中重复,狮身人面像计算结果相关性重量取决于一部电影的所有标题中的匹配。因此,两部应具有相同相关性的电影具有不同的权重。我试过使用不同的测量员,但无论如何结果都不好。我如何让狮身人面像独立计算一部电影的每个标题的重量然后取最高? 如果这个任务可以通过另一个搜索引擎更容易解决,就像elasticsearch告诉我的那样。 感谢

1 个答案:

答案 0 :(得分:1)

您已经有效地创建了一个字段,其中包含所有标题,这些字段连接为一个长字符串('在定义中加入')

如此多题的电影,会多次出现这些话,正如你所说的那样会影响排名。

您似乎目前正在设置将您的sphinx 文档作为电影。即每部电影一个文件(无论你对电影有什么数据)

一个选项是更改为每个标题有一个文档(即电影/语言组合),然后排名将在' ;一种语言。

因为您(大概)每部电影只需要一个结果,所以可以使用查询时间GROUP BY选项。 (这意味着确保movie_idattribute