【问题标题】:solr query for not equal to text value and number greater than 0solr 查询不等于文本值和大于 0 的数字
【发布时间】:2015-09-02 16:27:13
【问题描述】:

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

textField = "badValue" AND (numberField is null OR numberField = 0)

我添加了以下fq:

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

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

完整的查询响应标头,包含已解析的查询:

“响应头”:{ “状态”:0, “QTime”:245, “参数”:{ "q": "(numi) AND (solr_specs:[* TO ] OR full_description:[ TO ])", "defType": "edismax", "bf": "log(sum(popularity,1))", “缩进”:“真”, "qf": "categories^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": "(((:* NOTdistributor_status=VENDORDISC) OR QOH_estimate=[1 TO *])", "排序": "分数 desc,id desc", “行”:“20”, “重量”:“json”, “_”:“1441220051438” } }

QOH_estimate 是 numberField,distributor_status 是 textField。

【问题讨论】:

    标签: solr solrj


    【解决方案1】:

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

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

    这里首先选择不包含textField:badValueORing 的文档以及来自numberField:[1 TO *] 条件的文档。

    【讨论】:

    • 我尝试使用您指定的 fq 参数,使用和不使用过滤器都得到了相同的结果。就像我最初猜测如何完成此操作一样,查询似乎允许 textField = badValue 和 numberField = 0 的文档。
    • 你能提供你正在使用的确切查询吗?
    • 我修改了问题以包含响应标头,其中包含查询的解析副本。
    • 看起来您将其放入 qf 参数而不是 fq 参数中。 fq 代表过滤查询。
    • 糟糕,我认为我在复制时出错了,我已修复它,但问题仍然存在。
    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多