我已经针对给定的搜索词实现了基于N个最近邻居查询的模糊搜索算法。每个查询返回一组预设的原始结果,在我的例子中是最大值。 200次点击/查询,按分数降序排序,最高分排名第一。
原始搜索已经产生了良好的结果,但在一些相当罕见的情况下还不够好,所以我添加了另一个后处理层或更好地说基于Levenshtein-Damerau算法测量的原始搜索结果的另一个度量查询词与原始结果之间的单词/短语距离。得分越低越好,0.0将是精确匹配。
使用Levenshtein-Damerau后处理算法,我将结果从最低到最高进行排序。
比赛的质量非常好,所有相关的命中率都排在前列。我仍然拥有来自核心搜索的大部分200次点击,我正在寻找一种智能方法将最终结果集限制为最高10-20次点击。我可以添加一个静态限制,因为它基本上完成了。但我想知道是否有更好的方法可以根据我在每个搜索结果集中获得的各个指标来执行此操作。
我有以下结果指标:
我唯一的想法就是从结果集中取出一个子范围,比如前20%的结果很容易实现。更有趣的是分析最高结果分数/指标,并找到一些过于模糊的指示。我可以使用我在Levenshtein-Damerau算法层内收集的指标,分别是单词和短语距离参数 - 这些值以及其他2个参数构成最终距离得分。例如,如果单词和/或短语距离超过某个阈值,则跳过结果。这种方式有点复杂但可能。
好吧,我想知道是否有更多的机会我可以使用而且显然没有看到。再一次,我想省略静态限制,并使其在每个单独的结果集上更加灵活。
非常感谢任何提示或进一步的想法。