索尔的得分

时间:2014-09-03 10:43:11

标签: java solr lucene solrj

根据匹配的两个字符串的百分比计算solr得分。

例如:如果我搜索了ABDUL,那么与此搜索字符串类似的结果应该在分数上更高等等。

我的应用程序的示例输出是: 输出名称得分 Abdel Aziz RANTISI 2.218595
Abdul Hussein ABBAS 2.218595
Abdul Kader Ibrahim MOHAMED 2.218595

我无法弄清楚如何将这个分数分配给这些结果,如果我需要更改分数,那么我该如何修改此分数。 我已经浏览了这个链接http://lucene.apache.org/core/3_6_0/scoring.html

1 个答案:

答案 0 :(得分:1)

我认为您不应该考虑实际分数,而是评分如何影响所提供的结果。

默认情况下,Solr确实匹配术语(因为这是索引最好的)。通常,您可以通过索引和查询转换数据来解决此问题,例如语音搜索 - 您索引字段的语音版本以及普通字段,然后使用常规文本和转换后的拼音查询版本的文字。最有用的非精确命中通常使用语音搜索产生,其中语音字段的得分低于确切的字段。请记住使用适合您要编制索引的内容类型(名称/一般文字/等)以及您要编制索引的语言的语音算法。

您也可以执行模糊搜索,您可以使用term~[0-1]调整决定命中的相似因子(如果省略0到1之间的值,则使用0.5)。这可能非常适合您所需要的,并且您可以调整该值以允许您的应用程序所需的模糊性。

您还可以使用SpellChecker组件来获取与查询所包含内容最接近的术语,使用不同的计算方法" closeness" (因为"相似的百分比"相当开放的解释),例如levenshtein。