如何在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。