我需要一个查询,我只需要选择那些父文档,其子项的字段都没有指定的值。 即我需要这样的东西:
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。
答案 0 :(得分:0)
您使用纯正否定问题,因此您应该将*:*
添加到查询开始,同时childField:NOT value1
不正确,这意味着(childField:NOT) AND (value1)
。
正确的查询是
{!parent which=contentType:parent}*:* NOT childField:value1