Sphinx根据最短的单词出现搜索和自定义排名 - 如何?

时间:2014-02-19 16:16:10

标签: search sphinx ranking

例如,搜索查询是“排名”,结果很少:

Row #1: ranking good
Row #2: rank greater
Row #3: my custom rank

但是想要

Row #1: rank greater
Row #2: ranking good
Row #3: my custom rank

我用

expr('sum((10*(101-IF(min_hit_pos<100,min_hit_pos,100))+exact_hit)*user_weight)*1000+bm25')

使用LCS的另一种方式对我来说并不是最佳选择,因为有一个blend_chars和“multi-part”需要更多的权重,然后单独“multi”或“part”

expr('sum((4*lcs+(101-IF(min_hit_pos<100,min_hit_pos,100))+exact_hit)*user_weight)*1000+bm25')

Sphinx 2.1.2

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你不能仅仅在排名中这样做,因为排名者对单词的长度一无所知。

狮身人面像只是数字,(crc或查找表 - 取决于字典)所以它不知道这个单词有多长。

我能想到的唯一可能有帮助的是index_exact_words会影响精确单词匹配的排名。 (所以排名将排名高于排名,因为它完全匹配)

(澄清是exact_hit只是所有查询单词匹配字段单词,但知道没有匹配morpholoyg或前缀单词匹配。所以“rankng”&gt;“rank”仍然是exact_hit,因为它们是相同的单词主题阻止)