Lucene.NET - 查找不包含指定字段的文档

时间:2010-04-28 18:52:23

标签: c# indexing lucene lucene.net

假设我有一个名为'Animal'的类的2个实例。

Animal有3个字段:名称,年龄和类型

name字段是可空的,所以在我插入一个Animal的实例作为Lucene索引文档之前,我检查Animal.Name == null,如果是,我不会将它作为字段插入到我的文档中。如果我要检索所有动物,我会看到名称字段不存在,我可以将其值设置为null。

然而,在某些情况下,我可能会说“让我找到所有尚未指定名称的动物”。在这种情况下,我想从动物索引中检索所有不包含Name字段的Lucene.NET文档。

使用Lucene.NET有一个简单的方法吗?我想远离不必执行某种黑客来检查我的名字字段是否为'null'值。

1 个答案:

答案 0 :(得分:5)

我相信你可以用Solr做到这一点,但不能直接用Lucene做,所以用Lucene.Net是不可能的。

这里有两个解决方法,其中并没有那么糟糕:

  1. 对于字段中具有NULL值的项目,请添加 自定义字符串,如__NULL__或类似字符串,而不是省略字段。这是可以搜索的。
  2. 对于字段中具有NULL值的项目,添加一个不会出现在具有值的项目上的字段。例如。 EMPTY_FIELD = "no"。这可以在过滤器中使用。
  3. 希望这会对你有所帮助。