我在solr 7.2.1中设置了solr示例techproducts并进行了一处更改:我找到了stopwords.txt文件并添加了" a"作为一个禁令。接下来,我在调试模式下发出两个查询,以便查看查询的解析方式。
我尝试了两个问题:" x a b"和" x b"。
以下是原始查询:
q=x b&fl=id,score,price&sort=score desc&qf=name^0.75 manu cat^3.0 features^10.0&defType=edismax
和
q=x a b&fl=id,score,price&sort=score desc&qf=name^0.75 manu cat^3.0 features^10.0&defType=edismax
我的想法是,我希望不同的字段具有不同的权重,我希望能够从每个字词的最佳字段中获取每个字词的分数,即得分" x"从对阵" cat"领域和" b"反对"功能"字段。
当我有" x b"我完全得到了这种行为,解析后的查询如下:
+(((name:x)^0.75 | manu:x | (features:x)^10.0 | (cat:x)^3.0) ((name:b)^0.75 | manu:b | (features:b)^10.0 | (cat:b)^3.0))
当我使用" x a b"我改为:
+((name:x name:b)^0.75 | (manu:x manu:b) | (features:x features:b)^10.0 | (cat:x cat:a cat:b)^3.0)
使用" x a b"查询假设文档1匹配" x" in"功能"和比赛" b" in" cat"。本文档将基于其" x"或者它的" b",但分数不会是总和,就像查询的情况一样," x b"。
如何使edismax解析器对于带有停用词的查询的行为与没有停用词的行为相同,为没有停用词的查询保持行为不变?
我也注意到这似乎不会影响dismax查询解析器 - 只有edismax查询解析器。