有查询包含可选(" should"子句)必需和禁止令牌。以下两个查询返回不同的结果。但应该是一样的,不是吗?
+_query_:"{!type=**dismax** mm='2<2 3<3 5<4 7<51%' qf='normalizedField'} opt1 opt2 +mandatory -prohibited"
VS
+_query_:"{!type=**edismax** mm='2<2 3<3 5<4 7<51%' qf='normalizedField'} opt1 opt2 +mandatory -prohibited"
使用最小值#34;应该&#34;匹配参数:
mm:&#34; 2&lt; 2 3&lt; 3 5&lt; 4 7&lt; 51%&#34;
有什么想法吗?感谢
更新 solr索引中有文档:
{
...
"normalizedField":"opt1 opt3 mandatory"
...
}
使用 dismax 查询进行搜索:
+_query_:"{!type=dismax mm='2<2 3<3 5<4 7<51%' qf='normalizedField'} opt1 opt2 +mandatory -prohibited"
"parsedquery_toString":"+(((normalizedField:opt1) (normalizedField:opt2) +(normalizedField:mandatory) -(normalizedField:prohibited))~2) ()"
返回空结果(如预期的那样)
但是
使用 edismax 查询进行搜索:
+_query_:"{!type=edismax mm='2<2 3<3 5<4 7<51%' qf='normalizedField'} opt1 opt2 +mandatory -prohibited"
"parsedquery_toString": "+((normalizedField:opt1) (normalizedField:opt2) +(normalizedField:mandatory) -(normalizedField:prohibited))"
返回此文件。为什么?
答案 0 :(得分:2)
答案 1 :(得分:0)
edismax和dismax不相同(在这种情况下引入edismax不会有任何理由)。 edismax扩展了dismax的语法集和魔力,by introducing several new features:
我对那些容易影响评分的内容进行了粗体扩展,同时还提供了诸如&#34;纯负面嵌套查询等功能。将更改包含哪些文件。由于支持完整的lucene查询解析器语法,因此可能会发生同样的情况。
真正找出正在发生的事情的最简单方法是使用Solr的debugQuery
功能,这样您就可以看到得分以及dismax和edismax查询扩展到的确切内容。
..如果dismax有效,你可以使用它。