官术网_书友最值得收藏!

  • Lucene 4 Cookbook
  • Edwood Ng Vineeth Mohan
  • 231字
  • 2021-07-16 14:07:48

Deleting documents

We have learned how documents are added to an index. Now, we will see how to delete Documents. Suppose you want to keep your index up to date by deleting documents that are a week old. All of a sudden, the ability to remove documents becomes a very important feature. Let's see how can we do that.

How to do it...

IndexWriter provides the interface to delete documents from an index. It takes either term or query as argument, and will delete all the documents matching these arguments:

  • deleteDocuments(Term)
  • deleteDocuments(Term… terms)
  • deleteDocuments(Query)
  • deleteDocuments(Query… queries)
  • deleteAll( )

Here is a code snippet on how deleteDocuments is called:

  indexWriter.deleteDocuments(new Term("id", "1"));"));
  indexWriter.close();

How it works…

Assuming IndexWriter is already instantiated, this code will trigger IndexWriter to delete all the documents that contain the term id where the value equals 1. Then, we call close to commit changes and close the IndexWriting. Note that this is a match to a Field called id; it's not the same as DocId.

In fact, deletions do not happen at once. They are kept in the memory buffer and later flushed to the directory. The documents are initially marked as deleted on disk so subsequent searches will simply skip the deleted documents; however, to free the memory, you still need to wait. We will see the underlying process in detail in due course.

主站蜘蛛池模板: 丹巴县| 饶平县| 六盘水市| 蒙自县| 湖州市| 青龙| 商丘市| 阳原县| 湛江市| 阿拉善左旗| 塘沽区| 石台县| 榕江县| 宕昌县| 宜春市| 文登市| 会同县| 阿拉尔市| 金门县| 开鲁县| 读书| 曲沃县| 瑞昌市| 龙山县| 苍山县| 丰镇市| 太保市| 固原市| 富顺县| 昌宁县| 万年县| 天长市| 泽普县| 弥渡县| 平乡县| 临夏市| 镇平县| 乐亭县| 扎囊县| 建阳市| 湟中县|