【问题标题】:SOLR IDF Max docs configurationSOLR IDF Max 文档配置
【发布时间】:2017-09-08 07:28:01
【问题描述】:

我正在使用 SOLR 在我的应用程序中存储搜索所使用的文档。 SOLR 由多个应用程序共享,数据根据每个应用程序唯一的应用程序 ID 进行分组。

为了根据 TF-IDF 计算分数,SOLR 使用其中可用的总文档数。如何更改该配置以仅根据可用于应用程序 ID 的文档总数而不是计算跨应用程序的所有文档来检查 IDF。

【问题讨论】:

    标签: search solr tf-idf


    【解决方案1】:

    即使您将所有文档存储在一个集合中,您仍然可以做一些事情!

    除非你像这样在你的 solrconfig.xml 中启用ExactStatsCache

    <statsCache class="org.apache.solr.search.stats.ExactStatsCache"/>
    

    相似度计算是按分片计算的,而不是按总集合计算的。

    因此,如果您按 application_id 对文档进行分片,那么您将获得“更好”的分数,更接近您想要的分数。 如果您为每个分片获得一个 application_id,这正是您想要的,但如果您有很多应用程序并且分片不多,那么每个分片将获得多个应用程序。

    【讨论】:

      【解决方案2】:

      如果您将它们存储在一个集合中,恐怕使用内置功能是不可能的。

      我认为您有多种选择 - 将每个应用程序数据存储在单独的集合中,而不是您将拥有仅基于特定应用程序数据的 IDF。

      如果这不适合您 - 您将需要编写自己的相似度,可能通过扩展 https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html 并覆盖负责计算 IDF 的方法 public abstract float idf(long docFreq, long docCount)

      总的来说,我认为第一种方法会更好地满足您的需求。

      【讨论】:

        猜你喜欢
        • 2013-03-01
        • 2013-01-24
        • 1970-01-01
        • 2012-11-25
        • 1970-01-01
        • 2016-08-24
        • 2016-05-06
        • 2016-01-23
        • 2023-03-08
        相关资源
        最近更新 更多