如何查询Lucene中的空字段?

23

我希望在查询的第二部分中,能够列出数据不为NULL的结果列表。我已经知道了在Solr中如何做到这一点,但在Lucene中不知道怎么做。

有人有想法吗?

字符串:

(field_one:search AND field_two:3000) OR (field_three:search AND field_two:3000 AND NOT NULL field_one)

查询:

+field_one:search +field_two:3000 +field_three:search +field_two:3000 -field_one:null


可能是Lucene not null query?的重复问题。 - dcorking
3个回答

23
*:*  -MY_FIELD_NAME:[* TO *] 

以上应该可以解决问题,注意在 Lucene 中使用 * : *。


我尝试了您的建议,但并没有起作用。鉴于当没有提供值时,我想要的属性是否为非空未被索引,请求无法处理它,我想。 - Jonathan Ilambo
为了使上述内容正常工作,该字段需要存在(它仅区分NULL和非NULL(参见空字符串))。 - Mikos

8

这并没有回答原问题,但是谷歌把我带到了这里,解决了你正在解决的确切问题。我点赞了! - Jo Ham

6
*:* -MY_FIELD_NAME:[* TO "zzzzzzzzzz"]

您可以添加更多的“z”字符以确保包括字段的任何值。

1
很遗憾,“zzzzzzzzzzz”没有考虑非字母数字字符。 - Wild Pottok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接