如何在Lucene中实现我们自己的UID?

如何在Lucene中实现我们自己的UID?,lucene,Lucene,我希望创建一个包含以下字段的索引: UID 标题 所有者 内容 其中,我不希望UID是可搜索的。[喜欢元数据] 我希望UID的行为类似于docID,以便在我要删除或更新时, 我要用这个。 这可能吗?如何做到这一点 您可以通过添加Store.YES和Index.NO将其标记为不可搜索,但这不允许您使用它轻松更新/删除。您需要索引该字段以允许替换它(使用IndexWriter.UpdateDocument(Term,Document)其中Term=newterm(“UID”、“…”)),因此您需要

我希望创建一个包含以下字段的索引:
UID
标题
所有者
内容

其中,我不希望UID是可搜索的。[喜欢元数据]
我希望UID的行为类似于docID,以便在我要删除或更新时, 我要用这个。

这可能吗?如何做到这一点

您可以通过添加
Store.YES
Index.NO
将其标记为不可搜索,但这不允许您使用它轻松更新/删除。您需要索引该字段以允许替换它(使用
IndexWriter.UpdateDocument(Term,Document)
其中Term=
newterm(“UID”、“…”)
),因此您需要使用
index.analysisted
关键字分析器一起使用,或者
索引未分析的
。如果您有一个单值字段(通常是主键),也可以使用
FieldCache
。然而,这使得它可以搜索

总结:

  • Store.NO
    (可以使用
    FieldCache
    TermsEnum
    检索)
  • 索引。未分析
    (完整值将作为一个术语索引,包括任何空格)

所以我要么让它可搜索,要么就失去了更新/删除功能,对吗?没有办法一次命中2只鸟吗?你需要它可以搜索,以便在你需要删除它时能够找到它(更新实际上是删除+插入)。您可以将其存储起来,不可搜索,但随后您需要迭代所有文档,以找到哪个文档具有您要查找的存储uid。