【问题标题】:solr boost relevant documents with more contentsolr 以更多内容提升相关文档
【发布时间】:2012-10-31 21:27:01
【问题描述】:

我有包含少量单词、少量句子的文档和包含大量文本的文档。当用户搜索某些内容时,solr 首先给出文本最少的文档作为最相关的文档,最后给出文本最多的文档。但是对于用户来说,相关性应该是不同的。第一个结果应该是相关的,但也需要包含更多的文本,因为用户需要获得最相关的文档但有更多的文本 - 阅读一些东西。

那么我怎样才能首先获得相关的文档,但首先是那些有更多文本的文档,而不是那些有几个单词的文档。我正在使用一个文本字段并在其中进行搜索。

【问题讨论】:

    标签: search solr solr-boost


    【解决方案1】:

    Lucene 使用的DefaultSimilarity 类有一个scoring 算法,有一个lengthNorm 计算,可以将内容较少的文本提升到内容较多的文本。
    基本上基于条款的数量。
    您可以轻松扩展 Similarity 类,为 LengthNorm 提供自定义实现,从而使基于 NumOfTerms 的计算无效。
    然后可以在schema.xml 中指定此类,以便核心使用它。

    “Sweet one 计算所有长度的常数范数 [min,max] 范围(“最佳位置”),以及较小的规范值 超出这个范围的长度。比甜蜜更短或更长的文件 现场范围被“惩罚”

    最小值和最大值的默认值为 1,因此它不适合您。 尝试设置值,例如:-

     <similarity class="org.apache.lucene.misc.SweetSpotSimilarity"> 
       <str name="paramkey">param value</str> 
     </similarity> 
    

    【讨论】:

    • 我在 schema.xml 中添加了 并重启服务,结果还是一样。
    • 您与 SweetSpotSimilarity 一起使用的最小值和最大值是多少,这将决定 lengthNorm ?
    • 我没有定义它们,不知道怎么定义的。作为相似部分内的键?
    • 但是你确定 SweetSpotSimilarity 可以像这样与参数一起使用吗?我是否可以从一些示例中看到他们创建 SweetSpotSimilarityFactory 并将其与参数一起使用
    • 我刚刚查看了 SweetSpotSimilarity.java。它不接收参数。我需要更改并重新编译包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2016-12-14
    • 2011-02-28
    相关资源
    最近更新 更多