我正在为Lucene.Net中的数据库索引一行数据。一行等同于Document。
我想用DocId更新我的数据库,这样我就可以在结果中使用DocId来快速检索行。
我目前首先从结果文档中检索PK,我认为这应该比使用DocId从数据库直接重新检索要慢。
在向Lucene添加文档时如何找到DocId?
答案 0 :(得分:3)
依靠Lucene的DocId是一个糟糕的政策,因为即使Lucene试图避免这种情况。我建议你创建自己的DocId。在数据库中,我将使用auto-increment field。如果您的应用程序不使用关系数据库,则可以以编程方式创建此类型的字段。除此之外,我建议你阅读Search Engine versus DBMS - 我相信只有可以搜索的字段才能存储在Lucene中;该行的其余部分属于数据库,因此事件序列为:
答案 1 :(得分:2)
正如Yuval所说,泄漏内部Lucene实现细节是不好的,特别是因为当索引发生变异时Lucene doc id的变化。
如果使用doc.get(“pk”)查找主键对你来说太慢了,请使用FieldCache缓存内存中的所有pk。然后查找将非常快。