2

我将 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# 代码执行此检查,并且仅在查询为空时附加用于减少较短字段权重的任何其他参数。

大概我需要使用某种 FunctionQuery 作为提升参数,但任何关于如何实现这一点的建议都将不胜感激。谢谢。

4

1 回答 1

2

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

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

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

于 2012-06-15T17:36:56.727 回答