Search Sphinx搜索和基于最短单词出现率的自定义排名-如何?

Search Sphinx搜索和基于最短单词出现率的自定义排名-如何?,search,sphinx,ranking,Search,Sphinx,Ranking,例如,搜索查询为rank,结果很少: 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+bm

例如,搜索查询为rank,结果很少:

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的方法对我来说并不理想,因为有一种混合的木炭,多组分比多组分或单独使用更重

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


谢谢你的帮助

你不能单靠排名就能做到,因为排名者根本不知道单词的长度

对斯芬克斯来说,单词只是数字,可以是crc,也可以是查找表——这取决于dict,所以它不知道单词的长度

我认为唯一有帮助的是索引精确的单词,它会影响精确单词匹配的排名。因此,排名将高于排名,因为这是一个精确的匹配

要澄清的是,精确匹配只是所有查询词与字段词匹配,但不知道匹配morpholoyg或前缀词匹配。所以rankng>rank仍然是一个精确的单词,因为它们是同一个单词,需要词干