如何查询SOLR空字段?

106 lucene solr

我有一个大的solr索引,我注意到一些字段没有正确更新(索引是动态的).

这导致一些字段具有空的"id"字段.

我尝试了这些查询,但它们不起作用:

 id:''
 id:NULL
 id:null
 id:""
 id:
 id:['' TO *]
Run Code Online (Sandbox Code Playgroud)

有没有办法查询空字段?

谢谢

net*_*der 132

试试这个:

?q=-id:["" TO *]
Run Code Online (Sandbox Code Playgroud)

  • 即使SolrQuerySyntax页面说-id:[*TO*],只有-id:[""TO*]在solr 1.4上为我工作. (7认同)
  • 不是`?q = -id:*`也可以吗? (2认同)

小智 80

一个警告!如果您想通过OR或AND撰写此内容,则不能以此形式使用它:

-myfield:*
Run Code Online (Sandbox Code Playgroud)

但你必须使用

(*:* NOT myfield:*)
Run Code Online (Sandbox Code Playgroud)

这种形式完全可以组合.显然SOLR会将第一种形式扩展到第二种形式,但只有当它是顶级节点时才会.希望这能节省你一些时间!

  • 这里也+1。我实现了其他选项,但我必须将其包含在 fq= 而不是 q= 中,并且还必须实现 OR 来检查该字段是否为空或具有特定值。这是适用于该用例的唯一选项。 (3认同)
  • 你让我免于头疼。我不确定谢谢你是否足够。 (3认同)
  • 这个答案应该得到比实际更多的分数.你救了我们很多时间! (2认同)
  • 我同意这应该是该问题的公认答案 (2认同)

Yuv*_*l F 69

根据SolrQuerySyntax,您可以使用q=-id:[* TO *].


Mat*_*s M 11

如果您有一个大索引,则应使用默认值

   <field ... default="EMPTY" />
Run Code Online (Sandbox Code Playgroud)

然后查询此默认值.这比q = -id更有效:[""TO*]