【问题标题】:Scoring in Solr在 Solr 中评分
【发布时间】:2014-09-03 10:43:11
【问题描述】:

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

例如:如果我搜索 ABDUL,那么与此搜索字符串相似的结果应该得分更高等等。

我的应用程序的示例输出是: 输出名称分数 阿卜杜勒阿齐兹 RANTISI 2.218595
阿卜杜勒侯赛因 ABBAS 2.218595
Abdul Kader Ibrahim MOHAMED 2.218595

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

【问题讨论】:

标签: java solr lucene solrj


【解决方案1】:

我认为您不应该考虑实际得分,而应该考虑得分如何影响呈现的结果。

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

但是,您也可以执行模糊搜索,您可以使用term~[0-1] 调整确定命中的相似性因子(如果您忽略 0 和 1 之间的值,则使用 0.5)。这很可能足以满足您的需求,您可以调整该值以允许您的应用程序所需的那种模糊性。

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

【讨论】:

  • 我使用语音和其他作为文本一般对同一字段进行了两次索引,首先我进行语音搜索,然后使用模糊搜索和百分比逻辑对文本一般提供过滤查询。但是在输出中我需要显示匹配的百分比。参考stackoverflow.com/questions/25243204/…
猜你喜欢
  • 2011-12-24
  • 2011-04-04
  • 1970-01-01
  • 2014-05-13
  • 2016-08-24
  • 2018-04-06
  • 2021-07-13
  • 1970-01-01
  • 2011-09-24
相关资源
最近更新 更多