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

Sphinx: How can I change default ranking method?

我有 table 部电影(movie_id,片名),一部电影可以有很多片名(不同语言)。 我想实现 full-text 按所有标题搜索,然后具有相同相关性的电影应按日期排序。现在我正在使用 sphinx 并这样做:

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

这是唯一用于搜索的字段 据我了解,以这种方式sphinx搜索匹配一部电影的每个标题中的关键字,但有些电影有2个标题,而另一些,例如10个。由于关键字经常在一部电影的不同标题中重复,sphinx计算结果相关性权重取决于一部电影的所有标题中的匹配项。因此,本应具有相同相关性的两部电影具有不同的权重。我试过使用不同的排序器,但结果都很糟糕。如何让 sphinx 独立计算一部电影的每个标题的权重,然后取最高的? 如果这个任务可以通过另一个搜索引擎更容易地解决,比如 elasticsearch 告诉我。 谢谢

您已经有效地创建了一个仅包含 所有 标题的字段,这些标题连接成一个长字符串(定义中的 'joined')

所以multi-titled电影,会多次出现这个词,如你所说,这会影响排名。

您目前似乎已准备好将您的狮身人面像 文档 拍成电影。即每部电影一个文件(不管你有什么电影数据)


一个选项是改为每个标题有一个 文档(即 movie/language 组合),然后排名将是 'within' 一种语言。

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