solr查询不等于文本值和大于0的数字

solr query for not equal to text value and number greater than 0

我有两个字段的 solr 文档,一个是字符串,一个是整数。这两个字段都允许为空。我正在尝试编写一个查询来消除具有以下属性的文档:

textField = "badValue" AND(numberField 为空或 numberField = 0)

我添加了以下fq:

((NOT textField=badValue) OR numberField=[1 TO *])

这似乎没有正常工作,因为我得到了一个包含 textField = badValue 和 numberField = 0 的文档。我的 fq 做错了什么?

包含已解析查询的完整查询响应 header 是:

"responseHeader":{ "status": 0, "QTime": 245, "params":{ "q": "(numi) AND (solr_specs:[* TO ] OR full_description:[ TO ])", "defType": "edismax", "bf": "log(sum(popularity,1))", "indent": "true", "qf": "categories^3.0 manufacturer^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", "start": "0", "fq": "((:* 不是 distributor_status=VENDORDISC) 或 QOH_estimate=[1 TO *])", "sort": "score desc,id desc", "rows": "20", "wt": "json", “_”:“1441220051438” } }

QOH_estimate 是数字字段,distributor_status 是文本字段。

请在您的 fq 参数中尝试以下操作:((*:* NOT textField:badValue) OR numberField:[1 TO *]).

((*:* NOT distributor_status:VENDORDISC) OR QOH_estimate:[1 TO *])

这里首先选择不包含 textField:badValue 的文档,然后 OR 使用来自 numberField:[1 TO *] 条件的文档。