Solr Negative Boost查询结果包含一些特定字

时间:2015-06-10 09:36:56

标签: solr lucene solrj solr-boost

我有一个字段item_name,索引在Solr 5.0.0中。如何对包含某些特定单词的查询结果进行负面推动?

例如,假设我有item_name喜欢:

Feggi Brown Laptop Bags
Dell Laptop (Black) without Laptop Bag by Dell
HP Laptop with Laptop Bag
Sony laptop without bag
Goldendays Laptop Bag

如果我搜索laptop bags,则会返回如下结果:

Dell Laptop (Black) without Laptop Bag by Dell
HP Laptop with Laptop Bag
Feggi Brown Laptop Bags
Sony laptop without bag
Goldendays Laptop Bag

如何对包含单词“{/ p>”的item_name赋予负面或低位提升

  

有,没有......

目标是包含这些字词的item_name不会位于结果的顶部?

注意:在这种情况下,stopwords是否有任何关系?

2 个答案:

答案 0 :(得分:3)

documentation of Solr可以帮助您:

  

不支持真正的负增强,但你可以使用非常低的"   查询子句的数字提升值。一般来说问题就在于此   让人感到困惑的是“低”"提升仍然是一个提振,它只能   提高匹配文件的分数。例如,如果你想   找到所有匹配的文档" foo"或" bar"但惩罚分数   文件匹配" xxx"你可能想尝试......

q = foo^100 bar^100 xxx^0.00001    # NOT WHAT YOU WANT 
     

...但这仍然有助于匹配所有三个条款的文档得分更高   然后是仅匹配前两个的文档。假一种方法   "负面提升"是对所有事情给予大力推动   匹配。例如......

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

因此,在您的情况下,您必须执行以下操作:

q = item_name:laptop^100 item_name:bags^100 (*:* -item_name:with)^99 (*:* -item_name:without)^99

如果您使用(e)dismax,Solr's documentation告诉:

  

当使用(e)dismax时,人们有时会期望指定一个纯粹的   否定查询在" bq" param会工作(因为   Solr自动进行顶级纯粹的负面正面查询   添加一个隐含的" " - )但这并不适用于" bq",因为   如何通过" bq"直接添加到主要   查询。你需要明确......

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

在您的情况下,似乎与stopwords没有关联。

答案 1 :(得分:0)

在DisMax中,您可以降低包含“'”字样的文档的相关性得分。或者没有'在字段' item_name'使用以下代码:

{{1}}

这个语法可以在Dismax中使用,也可以在Solr和EDisMax解析器中使用,只要我知道。上面的代码采用yaml格式,用于VuFind中的相关设置。

是的,与停用词有一些关系。例如,单词' with'在停止单词列表中,当您使用番茄搜索沙拉时,结果集将与沙拉番茄相同。词语的存在'在文档中不会影响结果集的顺序。