在我的 rails 应用程序中使用 Thinking Sphinx,我将其设置为允许部分匹配infix
(例如,搜索“tray”将匹配“ashtray”)。
但是,我希望完整的单词匹配比中缀匹配具有更大的权重(相关性)。
因此,如果我对“托盘”的搜索返回这 3 个结果:“银托盘”、“烟灰缸”和“其他托盘” - 我希望“烟灰缸”成为按相关性排序时的最后一个结果。
有没有办法配置 Sphinx 来做到这一点?
在我的 rails 应用程序中使用 Thinking Sphinx,我将其设置为允许部分匹配infix
(例如,搜索“tray”将匹配“ashtray”)。
但是,我希望完整的单词匹配比中缀匹配具有更大的权重(相关性)。
因此,如果我对“托盘”的搜索返回这 3 个结果:“银托盘”、“烟灰缸”和“其他托盘” - 我希望“烟灰缸”成为按相关性排序时的最后一个结果。
有没有办法配置 Sphinx 来做到这一点?
您需要定义自己的排名。以下是默认的外观:
SPH_RANK_PROXIMITY_BM25 = sum(lcs*user_weight)*1000+bm25
SPH_RANK_BM25 = bm25
SPH_RANK_NONE = 1
SPH_RANK_WORDCOUNT = sum(hit_count*user_weight)
SPH_RANK_PROXIMITY = sum(lcs*user_weight)
SPH_RANK_MATCHANY = sum((word_count+(lcs-1)*max_lcs)*user_weight)
SPH_RANK_FIELDMASK = field_mask
SPH_RANK_SPH04 = sum((4*lcs+2*(min_hit_pos==1)+exact_hit)*user_weight)*1000+bm25