Solr中的负增强

Var*_*ain 4 sorting solr

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

&bq=charges:"0"^-1
Run Code Online (Sandbox Code Playgroud)

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

Jay*_*dra 7

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

bq=charges:[1 TO *]^10
Run Code Online (Sandbox Code Playgroud)


Bik*_*wal 7

这是旧帖子但还没有完全更新,目前支持负提升。

以下来自 关于负提升的Solr 文档

长期以来,“查询”对象级别一直支持负查询提升(导致匹配文档的分数为负)。现在 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
Run Code Online (Sandbox Code Playgroud)

此查询将被解析为:

"parsedquery_toString": "+((keyword:shoes)^1.0) () (brand:puma)^-2.0"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,-2因子将乘以(brand:puma)匹配的tf-idf 分数,从而导致包含brand puma.

但是,在 boost 查询中添加负面因素并不意味着它总是会为文档产生负的最终分数。例如,如果文档 tf-idf score for keyword:shoesmatch is3.0和 tf-idf score of brand:pumaresults in -1.5,则总体结果仍为 1.5(正)。因此,相应地使用负提升因子

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

"\n3.4329534 = 总和:\n 6.151505 = 权重(关键字:5786 中的鞋子) [SchemaSimilarity],结果:\n 6.151505 = score(doc=5786,freq=1.0 = termFreq=1.0\n),乘积of:\n 4.2804184 = idf,计算为 log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) 来自:\n 199.0 = docFreq\n 14417.0 = docCount\n 1.437127 = as (tfNorm) * (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 = 重量(品牌:puma 5786) [SchemaSimilarity],结果:\n -2.7185516 = score(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) from :\n 1.0 = termFreq=1.0\n 1.2 = 参数 k1\n 0.0 = 参数 b(字段的范数省略)\n",

关键字得分:鞋子 = 6.151505

品牌得分:puma = -2.7185516

导致总分正分 3.4329534


har*_*ler 5

Solr 不支持负提升。但是,话虽如此,您可以使用非常低的数字来提升您的内容,从而产生负面提升的效果。记住^1被认为是默认的提升。所以,&bq=charges:"0"^1和 一样&bq=charges:"0"。如果你想创造一个“负提升”,试试&bq=charges:"0"^0.8. 有关完整文档,请查看本文