我正在使用 Lucene 来存储(以及索引)各种文档。
每个文档都需要一个持久的唯一标识符(用作 URL 的一部分)。
如果我使用的是 SQL 数据库,我可以使用 integer primary key auto_increment
(或类似的)字段为添加的每条记录自动生成唯一 ID。
有没有办法用 Lucene 做到这一点?
我知道 Lucene 中的文档是有编号的,但我注意到这些编号会随着时间的推移而重新分配。
(我使用的是 Java 版本的 Lucene 3.0.3。)
最佳答案
正如 larsmans 所说,您需要将其存储在单独的字段中。我建议您对字段进行索引和存储,并使用 KeywordAnalyzer 对其进行索引。 您可以在内存中保留一个计数器并为每个新文档更新它。
剩下的就是持久化的问题——当Lucene进程停止时如何存储最大的id。一种可能性是使用保存最大 ID 的文本文件。
我相信Flexible Indexing将允许您将最大 id 作为“全局”字段添加到索引中。如果你愿意使用 Lucene 的主干,你可以尝试灵活的索引,看看它是否符合要求。
关于java - 如何使用 Lucene 生成唯一 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5059033/