2011-03-22 27 views
0

我想創建一個索引,可以說以下字段:
UID
title
owner
content
如何在Lucene中實現我們自己的UID?

外面,我不想UID被搜索。 [像元數據]
我希望UID的行爲像docID,以便當我想刪除或更新, 我會用這個。
這可能嗎?這個怎麼做 ?

回答

2

您可以通過添加它與Store.YESIndex.NO來標記爲不可搜索,但是這不會允許您通過使用它輕鬆更新/刪除。您需要將該字段編入索引以允許將其替換(使用IndexWriter.UpdateDocument(Term, Document),其中term = new Term("UID", "...")),因此您需要使用Index.ANALYZEDKeywordAnalyzerIndex.NOT_ANALYZED。如果您有單值字段(通常是主鍵),也可以使用FieldCache。但是,這使得它可以搜索。

總結:

  • Store.NO
  • Index.NOT_ANALYZED(完整的值將被索引作爲一個術語,包括任何空格)
+0

所以(它可以通過FieldCacheTermsEnum檢索)它是要麼使其可搜索或更新/刪除功能的權利?沒有辦法一次擊中兩隻鳥? – Shrinath 2011-03-22 09:04:24

+0

你需要它可以搜索,以便能夠找到它時,你需要刪除它(更新是真的刪除+插入)。您可以將其存儲起來,不可搜索,但是您需要遍歷所有文檔以查找哪個存儲了您要查找的存儲uid。 – sisve 2011-03-22 11:00:54

相關問題