Lucene.NET - 查找不包含指定字段的文档
假设我有 2 个名为“Animal”的类的实例。
Animal 有 3 个字段:Name、Age 和 Type
name 字段可以为 null,因此在将 Animal 实例作为 Lucene 索引文档插入之前,我会检查 Animal.Name == null 是否存在,如果是,则不会插入它作为我文档中的一个字段。如果我要检索所有动物,我会看到“名称”字段不存在,我可以将其值设置为 null。
然而,在某些情况下,我可能想说“给我所有尚未指定名称的动物”。在这种情况下,我想从我的动物索引中检索所有不包含 Name 字段的 Lucene.NET 文档。
有没有一种简单的方法可以使用 Lucene.NET 来做到这一点?我不想执行某种黑客操作来检查我的姓名字段是否具有“null”值。
Let's say I have 2 instance of a class called 'Animal'.
Animal has 3 fields: Name, Age, and Type
The name field is nullable, so before I insert an instance of Animal as a Lucene indexed document, I check if Animal.Name == null, and if it does, I do not insert it as a field in my document. If I were to retrieve all animals, I would see that the Name field does not exist and I can set its value to null.
However, there may be situations where I want to say "Get me all animals that do not have a name specified yet." In this situation I want to retrieve all Lucene.NET documents from my animal index that do not contain the Name field.
Is there an easy way to do this with Lucene.NET? I want to stay away from having to perform some sort of hack to check if my name field has a value of 'null'.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信你可以使用 Solr 做到这一点,但不能直接使用 Lucene,所以使用 Lucene.Net 是不可能的。
这里有两个解决方法,它们还不错:
像
__NULL__
或类似的自定义字符串,而不是省略该字段。这将是可搜索的。EMPTY_FIELD =“否”
。这可以用在过滤器中。希望这对您有所帮助。
I believe you can do this with Solr, but not with Lucene directly, so it's not possible with Lucene.Net.
Here's two workarounds, which are not that bad:
a custom string like
__NULL__
or similar instead of omitting the field. This would be searchable.EMPTY_FIELD = "no"
. This can be used in a filter.Hope this helps you a bit on the way.