java - 如何使用 Lucene 生成唯一 ID?

标签 java lucene

我正在使用 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/

相关文章:

Java 8 和 JDBC :ODBC Drivers in Access

search - 使用 lucene 进行多语言搜索

elasticsearch - 基于前缀和自定义标记器的Elasticsearch自动建议

java - 搜索多个数值字段 Lucene

linux - 为Linux中的内存映射文件保留物理内存

java - 使用 Lucene 搜索有多少结果?

java - 使用 bouncycaSTLe 对集中式 PKI 中的私钥进行加密

java - Java 中 Double.NaN 的 Objective-C 等价物是什么?

java - 如何根据属性的值获取属性的名称?

java - 从 scala 代码使用 java 中定义的递归泛型类型