我需要一个查询,在该查询中,我只需要选择那些父文档,而这些父文档的子字段都没有指定的值。即我需要这样的东西:
http://localhost:8983/solr/core1/select?q={!parent
which=contentType:parent}childField:NOT value1
问题是NOT运算符在块联接查询分析器中不受支持。有人能提出解决这个问题的方法吗?
例如:
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。
您使用的是纯否定问题,所以您应该添加*:*
来查询开始,而且childField:NOT value1
不正确,它意味着(childField:NOT) AND (value1)
。
正确的查询是
{!parent which=contentType:parent}*:* NOT childField:value1