我使用3个术语在solr(5.1)中搜索,当我更改术语的顺序时,我得到不同的结果。 当我使用solr的debugQuery时,我发现,当术语之间的运算符为AND时,solr正在添加+(必需的运算符)。
实施例: -
我有4个文件,其中字段为名称。默认运算符是OR
" docs":[ { "名字":"闪电小偷" }, { "名称":"怪物之海" }, { "姓名":"索菲的世界:希腊哲学家" }, { " name":" Lucene in Action,Second Edition" } ]
查询1 =姓名:("怪兽之海" NOT" Lucene在行动,第二版" AND"闪电小偷" ;)
结果="姓名":"闪电小偷"
" parsedquery":"名称:怪兽之海 - 名称:Lucene in Action,Second Edition + name:The Lightning Thief"
查询2 =姓名:("怪兽之海""闪电小偷" NOT" Lucene在行动,第二版&# 34)
结果=找到0个文件
" parsedquery":" +名称:怪兽之海+名字:闪电小偷 - 名字:Lucene在行动,第二版""
请帮助我理解这个逻辑。
答案 0 :(得分:1)
如果您的默认运营商是OR,这就是我所期望的。你的第二个例子是
TERM1(OR)NOT TERM2 AND TERM3
所以TERM1是可选的
答案 1 :(得分:0)
问题肯定来自您的默认运算符(AND vs OR)。你能提供准确的查询和调试输出吗?
此外,尝试在您的查询中激活edismax,如下所示,因此您可以使用否定。
http://localhost:8983/solr/your_search_core/select?defType=edismax&q=(term1+OR+term2)+AND+-term3