IndexWriter class provides 'deleteAll' method to delete all the documents from index. This method will drop all buffered documents and will remove all segments from the index. This change will not be visible until a commit() has been called. This method can be rolled back using rollback(). By default, when you close the IndexWriter, it commit the changes internally.
DocumentUtil.java
package com.sample.app.util;
import java.util.Arrays;
import java.util.List;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
public class DocumentUtil {
private static Document getDocument(String id, String title, String description, String blog) {
Document doc = new Document();
doc.add(new TextField("id", id, Field.Store.YES));
doc.add(new TextField("title", title, Field.Store.YES));
doc.add(new TextField("description", description, Field.Store.NO));
doc.add(new TextField("blog", blog, Field.Store.YES));
return doc;
}
public static List<Document> getDocuments() {
Document doc1 = getDocument("1", "JavaWorld",
"The original independent resource for Java developers, architects, and managers.", " javaworld.com");
Document doc2 = getDocument("2", "Oracle Blogs | The Java Source",
" Java powers more than 4.5 billion devices including 800 million computers and 1.5 billion cell phones. If you love Java, this is the blog you must follow.",
"blogs.oracle.com/java");
Document doc3 = getDocument("3", "A Java geek",
"Nicolas Fränkel's blog. IT architect focusing on Java, Java EE, and their surrounding ecosystems. He is a trainer, book writer, speaker & blogger.",
"blog.frankel.ch");
Document doc4 = getDocument("4", "Self Learning Java", "Learn Java fundamentals and other java libraries",
"self-learning-java-tutorial.blogspot.com");
return Arrays.asList(doc1, doc2, doc3, doc4);
}
}
App.java
package com.sample.app;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.MultiBits;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MMapDirectory;
import org.apache.lucene.store.NoLockFactory;
import org.apache.lucene.util.Bits;
import com.sample.app.util.DocumentUtil;
public class App {
private static void printAllDocuments(Directory directory) throws IOException {
try (IndexReader indexReader = DirectoryReader.open(directory)) {
System.out.println("All Documents in Lucene Index");
Bits liveDocs = MultiBits.getLiveDocs(indexReader);
for (int i = 0; i < indexReader.maxDoc(); i++) {
if (liveDocs != null && !liveDocs.get(i))
continue;
Document doc = indexReader.document(i);
System.out.println(doc.get("id") + ", " + doc.get("title"));
}
System.out.println();
}
}
public static void main(String args[]) throws IOException {
Analyzer analyzer = new StandardAnalyzer();
IndexWriterConfig indexWriterConfig1 = new IndexWriterConfig(analyzer);
Directory directory = new MMapDirectory(new File("/Users/Shared/lucene").toPath(), NoLockFactory.INSTANCE);
try (IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig1)) {
List<Document> documents = DocumentUtil.getDocuments();
System.out.println("Adding " + documents.size() + " documents to Lucene");
indexWriter.addDocuments(documents);
indexWriter.commit();
printAllDocuments(directory);
System.out.println("\nAbout to delete all documents");
indexWriter.deleteAll();
indexWriter.commit();
printAllDocuments(directory);
}
}
}
Output
Adding 4 documents to Lucene All Documents in Lucene Index 1, JavaWorld 2, Oracle Blogs | The Java Source 3, A Java geek 4, Self Learning Java About to delete all documents All Documents in Lucene Index
Previous Next Home
No comments:
Post a Comment