Lucene不是null查询?

Cha*_*dra 16 java lucene

我们如何构造一个查询来搜索特定字段不为空?

field_name:*不管用.我试过field_name:[a* to z*]这适用于英语,但不包括所有语言.

还有其他建议吗?

Kar*_*lis 14

我发现这在某些情况下有效 field:([0 TO 9] [a TO z])

  • 在那种情况下,我更喜欢:`field:([0 TO 9] [a TO z] [A TO Z])` 也可以得到大写字母 (2认同)

min*_*das 11

尝试field:[* TO *]field:["" TO *]。但为此使用过滤器可能会更好。


Car*_*way 9

对于迟到问题的其他人,文档包括这个小片段:

  • 其中该字段title具有任何非空值:
    _exists_:title


nik*_*500 5

目前 Lucene 不支持此功能。请参阅this以进行讨论。

另一种选择可能是存储一些预定义的字符串(如nullnullnullnull)作为字段值,如果它为空。然后您可以使用否定过滤器来删除这些记录。(我不太喜欢这个,但想不出更好的选择)