我发出以下查询:
"responseHeader": {
"status": 0,
"QTime": 1,
"params": {
"q": "(test)",
"defType": "edismax",
"indent": "true",
"fl": "distributor_status,QOH_estimate,id,score",
"start": "0",
"sort": "score desc,id desc",
"fq": "(QOH_estimate:[1 TO *])+OR+(distributor_status:stock)+OR+(*:* -distributor_status:VENDORDISC)",
"rows": "10",
"wt": "json",
"_": "1446833368873"
}
}
我将收到以下文件:
{ "id": "5445a000e4b0fb20ffca4aba",
"QOH_estimate": 0,
"distributor_status": "VENDORDISC",
"score": 4.48295
}
该文件如何通过fq?
它的QOH_estimate是0,所以它没有通过QOH_estimate:[1 TO *]。它的distributor_status是VENDORDISC,所以它失败了distribotor_status:stock。它的distributor_status是VENDORDISC,所以我也希望它也会失败(*:* -distributor_status:VENDORDISC)。由于它取消了析取查询的所有3个部分,我希望它被消除,但它没有被消除。为什么呢?
答案 0 :(得分:1)
我认为这些子句之间的空格是双重逃逸的。否则,当其他空格正常时,你在该输出中有+ OR +。
如果这没有帮助,请尝试添加调试标志,并查看如何将所有内容解析为Lucene级别。这应该暗示最终的扩张。