2011-10-22 92 views
0

我有一個簡單的Lucene索引,包含一些演示文件:刪除或更新在Lucene索引的文檔

Title, Keywords, H1Tag 

現在,我想刪除索引的文件之一, 但是從我已閱讀,我不能依靠docId,因爲它可能更改?

那麼我該如何更新/刪除文件?

我發現刪除/更新的唯一樣本是基於條款的,比如標題等於我想要刪除的內容,但是如果我有20個標題一樣?

+0

澄清:您可以通過DOMAIN-key進行刪除(如您自己分配給文檔/實體的密鑰,並可能用於後端的其餘部分)。用於像denis建議的查詢中。但是你不能通過Lucene分配的內部docid來刪除。 –

回答

0

您也可以將Query也傳遞給DeleteDocuments。

所以,

new QueryParser(...).Parse("+Title:... +H1Tag:.... +Keywords:...");

也可以用來刪除文件。

另一種方法是,以形成自己的boolen查詢

BooleanQuery bq = new BooleanQuery(); bq.Add(....);

並通過該查詢DeleteDocuments。但是,除非您存儲像Key這樣的字段併爲每個文檔創建您自己的唯一密鑰(例如哈希),否則這些都是您可以執行的操作。

+0

只有你答案中的最後一句給了我一些答案。 2票了...我想知道爲什麼。 – Dementic