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

rob*_*tts 2 lucene solr solrnet solr-boost

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

(tags:stack)^ 10 OR(tags:over)^ 5 OR(tags:flow)^ 2

术语"堆叠"被提升10,"超过"被提升5,"流"被提升2.我所追求的结果是"叠加"的结果将显得高于"叠加"的结果流动"等

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

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

如何通过Solr和SolrNet实现这一点,我有效地将Solr传递给查询字符串?如果不能,有没有其他方法可以解决这个问题?

提前致谢!

Yon*_*nik 7

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

所以只需要你原来的查询:(标签:堆栈)^ 10 OR(标签:over)^ 5 OR(标签:流)^ 2

并将^替换为^ =从boost增加到常量:( tags:stack)^ = 10 OR(tags:over)^ = 5 OR(tags:flow)^ = 2