Solr:长度归一化/omitNorms=false 有啥好处?
Posted
技术标签:
【中文标题】Solr:长度归一化/omitNorms=false 有啥好处?【英文标题】:Solr: What are the benefits of length normalization/omitNorms=false?Solr:长度归一化/omitNorms=false 有什么好处? 【发布时间】:2011-10-13 10:24:22 【问题描述】:我们正在使用 Solr 搜索各种长度的文章。我们索引描述性元数据(标题、作者、类别、关键字等)和全文文本。我们不会在索引时提升相关性 - 所有提升都在查询时完成(我们使用 dismax,再加上各种 qf、pf 和 bf 提升)。
目前我们的全文字段使用标准 omitNorms=false;因此,在其他条件相同的情况下,较短的文章(2-3 列英寸文章)通常比较长的专题长度(多页)文章具有更高的相关性。
在我们的案例中,文章长度是相关性的重要指标,因此我正在考虑在全文字段中设置 omitNorms=true。
问题:1. 为什么默认的 lucene/solr 行为会增加较短的字段长度而不是较高的字段长度?原因是什么? 2. 为什么我不想省略Norms?我不需要在这个特定字段上增加查询,也不需要在这个字段上使用任何类型的分面。
【问题讨论】:
【参考方案1】:问题一:
将较短的字段长度提升到较高的字段长度与确定文档相关性的基本概念有关,称为 TF-IDF(请参阅http://en.wikipedia.org/wiki/Tf%E2%80%93idf)。作为一个简短的示例,假设您的搜索返回了两个文档:第一个是 100 个单词,第二个是 1000 个单词。每个只包含一次您的搜索关键字。由于第一个文档中的关键字占文本的 1%,因此短文档被判断为与您的搜索更相关,而长文档中您搜索的关键字仅占文本的 0.1%。
问题 2:
听起来,根据您的要求,您可能想尝试省略规范。但是,这可能会以您意想不到的方式扭曲您的搜索结果。可能是您一直受益于长度归一化的一些不错的特性,但没有意识到这一点。另一种方法可能是将文档长度实际存储为某种标签字段,例如将文档标记为“短”、“中”和“长”,然后提升在长或长和中或其他上匹配的文档。这也将使您的最终用户能够在搜索时过滤文档长度。
再次,当我提到长度标准化的好特性时,您可能会想到这样的情况:存在涉及 10 个不同主题的超长文章,其中 1 个与用户的搜索匹配,或者存在仅讨论 1 个主题的长文章,被搜索的那个。在这种情况下,您可能更喜欢长文章而不是超长文章(即使超长文章与搜索关键字匹配的次数更多)。这一切都更多地取决于您的数据和您的用例。
【讨论】:
迈克,谢谢。这听起来就像我已经想的那样 - 很高兴得到确认。以上是关于Solr:长度归一化/omitNorms=false 有啥好处?的主要内容,如果未能解决你的问题,请参考以下文章