在Solr中阻塞加入查询解析器缺少正则表达式功能吗?

时间:2015-02-17 13:12:04

标签: solr nested-queries

我需要一个查询,我只需要选择那些父文档,其子项的字段都没有指定的值。 即我需要这样的东西:

http://localhost:8983/solr/core1/select?q={!parent 
which=contentType:parent}childField:NOT value1

问题是在块加入查询解析器中不支持运算符。任何人都可以建议一种解决这个问题的方法吗?

例如:

Suppose my docs are like this:
<doc>
    <field name="userid>1</field>
    <doc>
       <field name="address">city1</field>
    </doc>
    <doc>
       <field name="address">city2</field>
    </doc>
</doc>

<doc>
    <field name="userid>2</field>
    <doc>
       <field name="address">city2</field>
    </doc>
    <doc>
       <field name="address">city3</field>
    </doc>
</doc>

现在,如果我想要一个查询返回给我所有没有任何与city1相关的地址的用户(即只有userid = 2应该在结果中)然后如果我查询:

q={!parent which=userid:*}*:* -address:city1

这将返回两个结果,即userid = 2和userid = 1(因为userid = 1也有一个地址为city2的子节点),所需的输出仅为userid = 2。

1 个答案:

答案 0 :(得分:0)

您使用纯正否定问题,因此您应该将*:*添加到查询开始,同时childField:NOT value1不正确,这意味着(childField:NOT) AND (value1)

正确的查询是

{!parent which=contentType:parent}*:* NOT childField:value1