假设我有一个名为'Animal'的类的2个实例。
Animal有3个字段:名称,年龄和类型
name字段是可空的,所以在我插入一个Animal的实例作为Lucene索引文档之前,我检查Animal.Name == null,如果是,我不会将它作为字段插入到我的文档中。如果我要检索所有动物,我会看到名称字段不存在,我可以将其值设置为null。
然而,在某些情况下,我可能会说“让我找到所有尚未指定名称的动物”。在这种情况下,我想从动物索引中检索所有不包含Name字段的Lucene.NET文档。
使用Lucene.NET有一个简单的方法吗?我想远离不必执行某种黑客来检查我的名字字段是否为'null'值。
答案 0 :(得分:5)
我相信你可以用Solr做到这一点,但不能直接用Lucene做,所以用Lucene.Net是不可能的。
这里有两个解决方法,其中并没有那么糟糕:
__NULL__
或类似字符串,而不是省略字段。这是可以搜索的。EMPTY_FIELD = "no"
。这可以在过滤器中使用。希望这会对你有所帮助。