solr - 如何在 Solr 中进行常量分数查询

标签 solr lucene solrnet solr-boost

我正在使用 SolrNet 访问 Solr 索引,其中我有一个名为“标签”的多值字段。我想执行以下伪代码查询:

(标签:堆栈)^10 或(标签:结束)^5 或(标签:流)^2

术语“stack”被提升了 10,“over”被提升了 5,“flow”被提升了 2。我想要的结果是带有“stack”的结果会比那些有“流量”等的。

我遇到的问题是说“流”只出现在几个文档中,但“堆栈”出现在负载中,然后由于高 idf 值,带有“流”的文档出现在带有“堆栈”的文档之上".

当这个项目直接在 Lucene 中实现时,我使用了 ConstantScoreQuery,这些消除了仅基于提升值的分数的 idf。

如何使用 Solr 和 SolrNet 实现这一点,我实际上只是向 Solr 传递一个查询字符串?如果不能,是否有其他方法可以解决此问题?

提前致谢!

最佳答案

Solr 5.1 及更高版本通过 ^= 运算符将其内置到查询解析器语法中。

因此,只需采用您的原始查询: (tags:stack)^10 或 (tags:over)^5 或 (tags:flow)^2

并将 ^ 替换为 ^= 以从增强更改为常量: (tags:stack)^=10 或 (tags:over)^=5 或 (tags:flow)^=2

关于solr - 如何在 Solr 中进行常量分数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4451593/

相关文章:

c# - 如何将 Spatial Solr 添加到 Solrnet 查询

c# - 是否可以使用 SolrNet 映射复杂类型

solr - 如何在 SolrNet 3.6 中检索动态字段?

solr 评分文档,无论术语出现的频率如何,所有术语都相同

linq - Sitecore ContentSearch LINQ 不支持的表达式节点类型 : Parameter

solr - 如何使用 uri.typolink 构造此 solr 参数

search - 如何使用 Lucene Query 界面搜索值列表

spring - 发送有关 Alfresco 站点日历事件的电子邮件通知

ruby-on-rails - Elastic Beanstalk 部署后自动重启 SolR

mysql - SOLR 中的动态数据(如计数、观看次数等)- NRT 与 Redis?