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

  • 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.

主站蜘蛛池模板: 平阳县| 宁强县| 奉贤区| 观塘区| 开鲁县| 泰安市| 团风县| 资源县| 哈巴河县| 长丰县| 绍兴县| 凤阳县| 响水县| 木兰县| 调兵山市| 淮阳县| 文登市| 明水县| 曲阳县| 镇宁| 朝阳区| 蓝田县| 定西市| 岳阳市| 龙岩市| 玉树县| 东方市| 巴楚县| 含山县| 梁平县| 宣武区| 三门县| 闽侯县| 汨罗市| 宝兴县| 萍乡市| 连平县| 平度市| 那坡县| 定西市| 崇文区|