我有一個簡單的Lucene索引,包含一些演示文件:刪除或更新在Lucene索引的文檔
Title, Keywords, H1Tag
現在,我想刪除索引的文件之一, 但是從我已閱讀,我不能依靠docId,因爲它可能更改?
那麼我該如何更新/刪除文件?
我發現刪除/更新的唯一樣本是基於條款的,比如標題等於我想要刪除的內容,但是如果我有20個標題一樣?
我有一個簡單的Lucene索引,包含一些演示文件:刪除或更新在Lucene索引的文檔
Title, Keywords, H1Tag
現在,我想刪除索引的文件之一, 但是從我已閱讀,我不能依靠docId,因爲它可能更改?
那麼我該如何更新/刪除文件?
我發現刪除/更新的唯一樣本是基於條款的,比如標題等於我想要刪除的內容,但是如果我有20個標題一樣?
您也可以將Query
也傳遞給DeleteDocuments。
所以,
new QueryParser(...).Parse("+Title:... +H1Tag:.... +Keywords:...");
也可以用來刪除文件。
另一種方法是,以形成自己的boolen查詢
BooleanQuery bq = new BooleanQuery(); bq.Add(....);
並通過該查詢DeleteDocuments。但是,除非您存儲像Key
這樣的字段併爲每個文檔創建您自己的唯一密鑰(例如哈希),否則這些都是您可以執行的操作。
只有你答案中的最後一句給了我一些答案。 2票了...我想知道爲什麼。 – Dementic
澄清:您可以通過DOMAIN-key進行刪除(如您自己分配給文檔/實體的密鑰,並可能用於後端的其餘部分)。用於像denis建議的查詢中。但是你不能通過Lucene分配的內部docid來刪除。 –