我有一个字段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
是否有任何关系?
答案 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'在停止单词列表中,当您使用番茄搜索沙拉时,结果集将与沙拉番茄相同。词语的存在'在文档中不会影响结果集的顺序。