我正在考虑在一段时间内取消推广一系列文件的可能性 查询时间。在我的应用程序中,当我搜索例如"偏好",我想要 去除内容组标记的内容:"开发人员"或换句话说, 将这些内容推回到订单中。这是一个问题。我有以下几点 查询字段上的权重和源上的提升查询
qf=text^6 title^15 IndexTerm^8
如您所见,标题的权重更高。
现在,标有 ContentGroup:" Developer" 的大量内容包括 标题如" Preferences.material" 或"偏好设置属性" 或 的" Preferences.graphics" 即可。标题的提升推动了这些文件 最佳。
我正在寻找的是看是否有办法取消所有文件 标记为ContentGroup:" Developer"不论发生的是什么 文字或标题。我尝试了类似的东西,但没有任何区别。
Source:simplecontent^10 Source:Help^20 (-ContentGroup-local:("Developer"))^99
我正在使用edismax查询解析器。
任何指针都将受到赞赏。
谢谢,
Shamik
答案 0 :(得分:3)
你最后一次尝试时会遇到问题,但你必须从*:*
开始,这样你才能真正从中减去文件。然后可以提升生成的文档集(那些与您的查询不匹配的文档)。
如何对与查询匹配的文档进行否定(或极低)提升?
不支持真正的负增强,但您可以在查询子句中使用非常“低”的数字提升值。一般来说,困扰人们的问题是“低”提升仍然是一个提升,它只能提高匹配的文档的分数。例如,如果你想找到所有匹配“foo”或“bar”的文档但是惩罚匹配“xxx”的文档的分数,你可能会试着尝试...
q = foo^100 bar^100 xxx^0.00001 # NOT WHAT YOU WANT
...但这仍然有助于匹配所有三个子句的文档得分高于仅匹配前两个的文档。伪造“负面提升”的一种方法是大幅提升不匹配的所有东西。例如......
q = foo^100 bar^100 (*:* -xxx)^999
注意:当使用(e)dismax时,人们有时会期望在“bq”参数中指定一个带有大量提升的纯粹否定查询将起作用(因为Solr通过添加隐式“<”自动使顶级纯粹的负面正面查询em>:“ - 但这不适用于”bq“,因为通过”bq“指定的查询如何直接添加到主查询中。您需要明确...
?defType=dismax&q=foo bar&bq=(*:* -xxx)^999