我正在使用Solrnet访问SOLR索引,其中我拥有一个称为“ TAGS”的多价字段。我想执行以下伪代码查询:

(标签:堆栈)^10或(标签:over)^5或(标签:flow)^2

如果“堆栈”一词被10增强“堆叠”,那么“堆叠”被5和“流”增强了2。流”,等等

我遇到的问题是“流”仅出现在几个文档中,但是“堆栈”出现在负载中,然后由于IDF值高,带有“流”的文档出现在带有“堆栈”的文档上方。

当该项目在Lucene直接实施时,我使用了ConstantsCoreQuery,这些项目仅根据增强值消除了IDF。

Solr和Solrnet如何实现这一目标,在这里我只是通过Solr查询字符串?如果不能,我可以解决这个问题吗?

提前致谢!

有帮助吗?

解决方案

我认为没有任何方法可以直接在Solr中表达ConstantsCoreQuery,但似乎 范围和前缀查询在引擎盖下使用常量, ,因此您可以尝试伪造范围查询,例如 tags:[flow TO flow]

另外,您可以实现自己的Solr QueryParser。

其他提示

Solr 5.1及以后通过 ^= operator在查询解析器语法中内置。

因此,只需获取您的原始查询:(标签:stack)^10或(tags:Over)^5或(标签:flow)^2

并用^=替换^=从增强变为常数:( tags:stack)^= 10或(tags:off)^= 5或(tags:flow)^= 2

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top