我正在使用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参数,但是如何实现这一点的任何建议都将非常受欢迎。感谢。