Solr中的负增强

时间:2012-12-10 19:11:12

标签: sorting solr

我的索引中有'费用'字段。我想提高费用值不等于0的结果。我尝试使用bq参数,但它没有成功。

&bq=charges:"0"^-1

我尝试使用上面的内容,但是我收到了400错误报告。

3 个答案:

答案 0 :(得分:7)

除了@harmstyler的回答 您可以积极地提升无零值(如果费用是整数字段),而不是负向提升,例如

bq=charges:[1 TO *]^10

答案 1 :(得分:4)

这是旧帖子,但尚未完全更新,目前支持负升压。

Solr Documentation处获得负增长:

  

很长一段时间以来,“查询”对象级别都支持否定查询(导致匹配文档的否定分数)。现在,QueryParsers也已更新为可以处理此问题。

部分resulting in negative scores for matching documents不一定总是正确的,如下所述。

示例用法:假设您的收藏名称为product_collection,并且您想使用特定品牌掩埋(负提升)产品:

http://localhost:8983/solr/product_collection/select?q=shoes&bq=brand:puma^-2&defType=dismax

此查询将被解析为:

"parsedquery_toString": "+((keyword:shoes)^1.0) () (brand:puma)^-2.0"

在这种情况下,-2因子将与(brand:puma)匹配的tf-idf分数相乘,从而导致包含brand puma的文档的分数较低。

但是,在增强查询中添加否定因素并不意味着它将始终为文档产生否定的最终分数。例如,如果keyword:shoes个匹配项的文档tf-idf得分为3.0,而brand:puma的tf-idf得分为-1.5,则总体结果仍为1.5(正)。因此,相应地使用负提升因子

我自己的收藏集中的一个这样的例子:

  

“ \ n3.4329534 =总和:\ n 6.151505 =重量(关键字:5786中的鞋子) [SchemaSimilarity],结果:\ n 6.151505 =得分(doc = 5786,freq = 1.0 = termFreq = 1.0 \ n),乘积为:\ n 4.2804184 = idf,计算为log(1 +(docCount-docFreq + 0.5)/(docFreq + 0.5)),来自:\ n 199.0 = docFreq \ n 14417.0 = docCount \ n 1.437127 = tfNorm,计算为(freq *(k1 + 1))/(freq + k1 *(1-b + b * fieldLength / avgFieldLength))来自:\ n 1.0 = termFreq = 1.0 \ n 1.2 =参数k1 \ n 0.75 =参数b \ n 7.7978773 = avgFieldLength \ n 2.0 = fieldLength \ n -2.7185516 =重量(brand:puma in 5786),[SchemaSimilarity],结果:\ n -2.7185516 =得分( doc = 5786,freq = 1.0 = termFreq = 1.0 \ n),乘积为:\ n -2.0 = boost \ n 1.3592758 = idf,计算为log(1 +(docCount-docFreq + 0.5)/(docFreq + 0.5))来自:\ n 3704.0 = docFreq \ n 14422.0 = docCount \ n 1.0 = tfNorm,计算方式为(freq *(k1 + 1))/(freq + k1)来自:\ n 1.0 = termFreq = 1.0 \ n 1.2 =参数k1 \ n 0.0 =参数b(字段省略了规范)\ n“,

关键字得分:鞋= 6.151505

品牌评分:彪马= -2.7185516

总体得分为阳性得分3.4329534

答案 2 :(得分:3)

Solr不支持负增强。然而,话虽如此,你可以用一个非常低的数字来提升你的内容,使其具有负面提升的效果。请记住,^1被视为默认提升。因此,&bq=charges:"0"^1&bq=charges:"0"相同。 如果您想创建“消极提升”,请尝试&bq=charges:"0"^0.8。有关完整文档view this article