根据Solr中的字段长度更改文档提升?

时间:2012-06-15 15:34:34

标签: solr

我正在使用Solr和一个使用SolrNet的ASP.NET应用程序。

我的索引包含具有不同长度的标题和说明字段的文档。这通常使用dismax处理程序查询,并通过bq参数对每个字段应用不同的提升 - 例如。 (is_curated:true^100 OR is_curated:false^0) (title:foo^50) (description:bar^30)

如果未指定搜索字词,则我希望在搜索结果中提供标题较短且描述较少的文档(通过*:*参数指定默认搜索字词q.alt)。

因此,如果用户搜索“apples”,那么提升应该正常工作,其中具有较短标题和匹配描述的文档应该加权更多,但如果没有指定搜索项,那么具有短标题的文档并且描述的权重应该不那么重。

Solr查询不一定需要考虑非空查询,因为我可以从C#代码执行此检查,并且如果查询为空,则只附加用于减少较短字段权重的任何其他参数。 / p>

据推测,我需要使用某种类型的FunctionQuery作为boost参数,但是如何实现这一点的任何建议都将非常受欢迎。感谢。

1 个答案:

答案 0 :(得分:1)

Solr在计算分数时会考虑字段的长度。

lengthNorm - 匹配较小的字段得分高于较大字段上的匹配

您可以自定义相似性类以覆盖行为。