我有两个字段的solr文档,一个是字符串,一个是整数。两个字段都允许为空。我正在尝试编写一个查询,以消除具有以下属性的文档:
textField =" badValue" AND(numberField为null或numberField = 0)
我添加了以下fq:
((NOT textField=badValue) OR numberField=[1 TO *])
这似乎没有正常工作,因为我得到一个textField = badValue和numberField = 0的文档。我的fq出了什么问题?
包含已解析查询的完整查询响应标头为:
" responseHeader":{ "状态":0, " QTime":245, " params":{ " q":"(numi)AND(solr_specs:[* TO ]或full_description:[ TO ])", " defType":" edismax", " bf":" log(sum(popular,1))", "缩进":" true", " qf":"类别^ 3.0制造商^ 1.0 sku ^ 0.2 split_sku ^ 0.2 upc ^ 1.0 invoice_description ^ 2.6 full_description solr_specs ^ 0.8 solr_spec_values ^ 1.7 legacyid legacy_altcode id", " fl":" distributor_status,QOH_estimate,id,score", "开始":" 0", " fq":"((:* NOT distributor_status = VENDORDISC)或QOH_estimate = [1 TO *])", "排序":"得分desc,id desc", "行":" 20", " wt":" json", " _":" 1441220051438" } }
QOH_estimate是numberField,distributor_status是textField。
答案 0 :(得分:2)
请在fq
参数中尝试以下操作:((*:* NOT textField:badValue) OR numberField:[1 TO *])
。
((*:* NOT distributor_status:VENDORDISC) OR QOH_estimate:[1 TO *])
首先,您选择的文档不包含textField:badValue
和OR
来自numberField:[1 TO *]
条件的文档。