我正在尝试编写一个自由文本搜索算法来查找墙上的特定帖子(类似于 Facebook 使用的墙)。假设用户能够在搜索字段中写一些单词并在包含这些单词的帖子上获得点击;最佳匹配在顶部,然后根据匹配分数以降序排列其他帖子。
我使用编辑距离 (Levenshtein) "e(x, y) = e" 来计算每个帖子与查询词 "x" 和帖子词 "y" 相比的分数: score(x, y ) = 2^(2 - e)(1 - min(e, |x|) / |x|),其中“|x|” 是查询词中的字母数。
帖子中的每个单词都会影响该特定帖子的总分。当帖子大小大致相同时,这种方法似乎效果很好,但有时某些大型帖子仅靠其中包含很多单词而在实践中与查询无关时设法获得分数。
我是在以错误的方式处理这个问题,还是有一些方法可以使我没有想到的分数正常化?