Solr负升压

Solr负升压,solr,lucene,edismax,solr-boost,Solr,Lucene,Edismax,Solr Boost,我正在研究在运行期间对一组文档进行反增强的可能性 查询时间。在我的应用程序中,当我搜索例如“首选项”时,我希望 要取消使用ContentGroup标记的内容:“开发者”或换句话说, 按顺序向后推这些内容。这是陷阱。我有以下几点 查询字段上的权重和源上的boost查询 qf=text^6 title^15 IndexTerm^8 如您所见,标题的权重更高 现在,一组标有ContentGroup:“Developer”的内容由 标题如“首选项.材质”或“首选项属性”或 “首选项.图形”。标题的提升将

我正在研究在运行期间对一组文档进行反增强的可能性 查询时间。在我的应用程序中,当我搜索例如“首选项”时,我希望 要取消使用ContentGroup标记的内容:“开发者”或换句话说, 按顺序向后推这些内容。这是陷阱。我有以下几点 查询字段上的权重和源上的boost查询

qf=text^6 title^15 IndexTerm^8
如您所见,标题的权重更高

现在,一组标有ContentGroup:“Developer”的内容由 标题如“首选项.材质”“首选项属性”“首选项.图形”。标题的提升将这些文档推到最底层 顶

我正在寻找的是,是否有一种方法可以删除所有 标记为ContentGroup:“开发人员”,无论出现的术语是什么 文本或标题。我试过类似的方法,但没有任何效果

Source:simplecontent^10 Source:Help^20 (-ContentGroup-local:("Developer"))^99
我正在使用edismax查询解析器

任何指点都将不胜感激

谢谢


Shamik

您在最后一次尝试中发现了一些东西,但您必须从
*:*
开始,这样您实际上就可以从中减去文档。然后可以增强生成的文档集(与查询不匹配的文档)

如何对匹配查询的文档进行负面(或极低)提升?

不支持真正的负提升,但可以对查询子句使用非常“低”的数字提升值。一般来说,让人困惑的问题是,“低”提升仍然是提升,它只能提高匹配文档的分数。例如,如果您想查找所有匹配“foo”或“bar”的文档,但要惩罚匹配“xxx”的文档分数,您可能会尝试

q=foo^100 bar^100 xxx^0.00001#不是你想要的

…但这仍然有助于匹配所有三个子句的文档比仅匹配前两个子句的文档得分更高。假装“负增长”的一种方法是对所有不匹配的事物进行大幅增长。例如

q=foo^100 bar^100(*:*-xxx)^999

注意:当使用(e)Demax时,人们有时希望在“bq”参数中指定一个纯负查询并大幅提升它的性能(因为Solr通过添加一个隐式参数自动生成顶级纯负-正查询):--但这对“bq”不起作用,因为通过“bq”指定查询的方式不同直接添加到主查询。您需要显式

?defType=demax&q=foo bar&bq=(*:*-xxx)^999


这难道不会导致性能问题吗?我认为负面查询总是有问题的。@MatsLindh,谢谢你的回答。我在Solr文档中看到了这个选项,但如果我在其他领域有提升,它就不会起作用。我的案例是,bq=Source:simplecontent^10 Source:Help^20(:-ContentGroup local:(“Developer”)^99。