在Solr Do Block Join查询分析器中,缺少正则表达式功能



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

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

最新更新