【发布时间】:2011-05-25 23:52:12
【问题描述】:
我正在使用 SolrNet 访问 Solr 索引,其中有一个名为“tags”的多值字段。我要执行以下伪代码查询:
(tags:stack)^10 OR (tags:over)^5 OR (tags:flow)^2
其中术语“stack”被提升 10,“over”被提升 5,“flow”被提升 2。我想要的结果是“stack”的结果将高于那些有“流”等的。
我遇到的问题是说“流”只出现在几个文档中,但“堆栈”出现在加载中,然后由于高 idf 值,带有“流”的文档出现在带有“堆栈”的文档之上”。
当这个项目直接在 Lucene 中实施时,我使用了 ConstantScoreQuery,它们消除了 idf,其分数仅基于 boost 值。
如何使用 Solr 和 SolrNet 实现这一点,我实际上只是向 Solr 传递了一个查询字符串?如果不能,是否有其他方法可以解决此问题?
提前致谢!
【问题讨论】:
-
如果你去掉最后一个子句的分数提升怎么办?
(tags:flow)我相信这是一个恒定的分数查询。实际上,它是默认值 1 的分数提升。
标签: solr lucene solrnet solr-boost