List of usage examples for org.apache.lucene.index IndexWriter deleteDocuments
public long deleteDocuments(Query... queries) throws IOException
From source file:lia.chapter3.NearRealTimeTest.java
License:Apache License
public void testNearRealTime() throws Exception { Directory dir = new RAMDirectory(); IndexWriter writer = Utils.getIndexWriter(dir); for (int i = 0; i < 10; i++) { Document doc = new Document(); doc.add(new Field("id", "" + i, StringField.TYPE_STORED)); doc.add(new Field("text", "aaa", TextField.TYPE_STORED)); writer.addDocument(doc);//from w w w. j a v a2 s.c o m } IndexSearcher searcher = Utils.getIndexSearcher(dir); // #A Query query = new TermQuery(new Term("text", "aaa")); TopDocs docs = searcher.search(query, 1); assertEquals(10, docs.totalHits); // #B writer.deleteDocuments(new Term("id", "7")); // #2 Document doc = new Document(); // #3 doc.add(new Field("id", // #3 "11", // #3 StringField.TYPE_STORED)); // #3 doc.add(new Field("text", // #3 "bbb", // #3 TextField.TYPE_STORED)); // #3 writer.addDocument(doc); // #3 IndexReader newReader = searcher.getIndexReader(); // #4 assertFalse(searcher.getIndexReader() == newReader); // #5 searcher.getIndexReader().close(); // #6 searcher = new IndexSearcher(newReader); TopDocs hits = searcher.search(query, 10); // #7 assertEquals(9, hits.totalHits); // #7 query = new TermQuery(new Term("text", "bbb")); // #8 hits = searcher.search(query, 1); // #8 assertEquals(1, hits.totalHits); // #8 newReader.close(); writer.close(); }
From source file:lia.searching.NearRealTime.java
License:Apache License
public void testNearRealTime() throws Exception { Directory dir = new RAMDirectory(); IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_46, new StandardAnalyzer(Version.LUCENE_45)); IndexWriter writer = new IndexWriter(dir, iwc); for (int i = 0; i < 10; i++) { Document doc = new Document(); doc.add(new LongField("id", i, Field.Store.NO)); doc.add(new TextField("text", "aaa", Field.Store.NO)); writer.addDocument(doc);/*from w w w . java 2 s . c o m*/ } DirectoryReader reader = DirectoryReader.open(writer, true); // #1 IndexSearcher searcher = new IndexSearcher(reader); // #A Query query = new TermQuery(new Term("text", "aaa")); TopDocs docs = searcher.search(query, 1); assertEquals(10, docs.totalHits); // #B writer.deleteDocuments(new Term("id", "7")); // #2 IndexReader newReader = writer.getReader(); if (r2 != null) { reader.close(); reader = r2; } else { // recreate reader.close(); reader = DirectoryReader.open(dir); } searcher = new IndexSearcher(reader); // #A docs = searcher.search(query, 10); assertEquals(9, docs.totalHits); /* Document doc = new Document(); // #3 doc.add(new LongField("id", // #3 11, // #3 Field.Store.NO)); // #3 doc.add(new TextField("text", // #3 "bbb", // #3 Field.Store.NO)); // #3 writer.addDocument(doc); // #3 */ /* searcher = new IndexSearcher(DirectoryReader.openIfChanged(reader, writer, true)); TopDocs hits = searcher.search(query, 10); // #7 assertEquals(9, hits.totalHits); // #7 */ query = new TermQuery(new Term("text", "bbb")); // #8 TopDocs hits = searcher.search(query, 1); // #8 assertEquals(1, hits.totalHits); // #8 reader.close(); writer.close(); }
From source file:lucandra.NumericRangeTests.java
License:Apache License
@AfterClass public static void cleanIndexes() throws CorruptIndexException, IOException, TTransportException { IndexWriter writer = new IndexWriter(indexName, connection); writer.deleteDocuments(new Term("Id", "first")); writer.deleteDocuments(new Term("Id", "second")); writer.deleteDocuments(new Term("Id", "third")); }
From source file:lucene.demo.search.FileSearcher.java
License:Apache License
private void removeDocs(Query query) throws IOException { Directory dir = FSDirectory.open(new File(indexPath)); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_48); IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_48, analyzer); iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND); IndexWriter writer = new IndexWriter(dir, iwc); writer.deleteDocuments(query); writer.commit();/*from ww w . j a v a 2 s .co m*/ writer.close(); }
From source file:lux.index.XmlIndexer.java
License:Mozilla Public License
private void addLuceneDocument(IndexWriter indexWriter) throws CorruptIndexException, IOException { indexWriter.deleteDocuments(new Term(configuration.getUriFieldName(), uri)); indexWriter.addDocument(createLuceneDocument()); }
From source file:memedb.fulltext.Lucene.java
License:Apache License
public void removeResult(String db, String id) { IndexWriter writer = writers.get(db); if (writer == null) { log.error("Missing IndexWriter for database {}", db); return;//from w w w . j a v a2 s . c om } try { writer.deleteDocuments(new Term("_id", id)); } catch (CorruptIndexException e) { } catch (IOException e) { } }
From source file:net.bobah.mail.Indexer.java
License:Apache License
private void index(File file, IndexWriter writer, IndexSearcher searcher) throws IOException, MessagingException { if (searcher != null) { final Query query = new TermQuery(new Term("id", file.getName())); TopDocs docs = searcher.search(query, 1); if (docs.totalHits == 1) { int docID = docs.scoreDocs[0].doc; Document indexedDoc = searcher.doc(docID); final long indexedStamp = indexedDoc.getField("stamp").numericValue().longValue(); if (indexedStamp >= file.lastModified()) { log.debug("{} - unchanged", file.getName()); return; } else { log.debug("{} - reindexing", file.getName()); writer.deleteDocuments(query); }/* w ww. jav a2 s.c om*/ } else { log.info("{} - indexing", file.getName()); } } else { log.info("{} - indexing", file.getName()); } final MimeMessage msg = readMessage(file, log); final Document doc = new Document(); doc.add(new StringField("id", file.getName(), Store.YES)); doc.add(new LongField("stamp", file.lastModified(), Store.YES)); doc.add(new StringField("path", file.getAbsolutePath(), Store.YES)); final Enumeration<?> headers = msg.getAllHeaders(); while (headers.hasMoreElements()) { Header header = (Header) headers.nextElement(); doc.add(new TextField(header.getName(), header.getValue(), Store.YES)); } if (msg.getContentType() != null) { final String contentType = msg.getContentType().toLowerCase(); if (contentType.startsWith("multipart/")) { final Multipart multiPart = (Multipart) msg.getContent(); for (int i = 0; i < multiPart.getCount(); ++i) { final BodyPart bodyPart = multiPart.getBodyPart(i); doc.add(new TextField(String.format("body-%d", i), extractText(bodyPart.getContentType().toLowerCase(), bodyPart.getContent()), Store.NO)); } } else { doc.add(new TextField("body", extractText(contentType, msg.getContent()), Store.NO)); } writer.addDocument(doc); } //file.setLastModified(mime.getSentDate().getTime()); }
From source file:net.bobah.mail.Indexer.java
License:Apache License
private void runEx() throws Exception { final File dir = new File(config.getProperty("net.bobah.mail.local.folder")); if (!dir.exists() || !dir.isDirectory()) { throw new IllegalArgumentException(String.format("\"%s\" does not exist or is not a directory", dir)); }//from ww w . ja va2 s.c o m Collection<File> files = findFiles(dir, new FileFilter() { @Override public boolean accept(File file) { return file.getName().endsWith(".eml"); } }, new Comparator<File>() { @Override public int compare(File l, File r) { return Long.compare(l.lastModified(), r.lastModified()); } }); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_44); IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_44, analyzer); iwc.setOpenMode(OpenMode.CREATE_OR_APPEND); final File indexDir = new File(dir, "index"); final boolean indexExisted = indexDir.exists(); if (!indexExisted) indexDir.mkdirs(); final Directory idx = FSDirectory.open(indexDir); final IndexWriter writer = new IndexWriter(idx, iwc); final IndexReader reader = indexExisted ? DirectoryReader.open(idx) : null; final IndexSearcher searcher = indexExisted ? new IndexSearcher(reader) : null; //final AtomicLong counter = new AtomicLong(0l); try { for (final File file : files) { executor.submit(new Runnable() { @Override public void run() { try { index(file, writer, searcher); //if (counter.incrementAndGet() % 100 == 0) writer.commit(); // TODO: VL: make batch size configurable } catch (Exception e) { throw new RuntimeException(e); } } }); } shutdownExecutor(executor, log); // TODO: VL: delete stale documents from the index writer.commit(); log.info("committed index updates"); searcher.search(new MatchAllDocsQuery(), new Collector() { @Override public void setScorer(Scorer scorer) throws IOException { } @Override public void setNextReader(AtomicReaderContext unused) throws IOException { } @Override public void collect(int docID) throws IOException { Document doc = reader.document(docID); final String path = doc.get("path"); if (path != null) { try { final File file = new File(path); if (!file.exists()) { log.info("deleting index for {}", doc.get("id")); writer.deleteDocuments(new Term("id", doc.get("id"))); } } catch (SecurityException e) { log.error("exception", e); } } } @Override public boolean acceptsDocsOutOfOrder() { return true; } }); writer.commit(); log.info("committed index deletions"); } finally { try { // close writer without commit (see explicit commits above) writer.rollback(); } catch (IOException e) { log.error("exception while closing writer", e); } } }
From source file:net.dataforte.infinispan.amanuensis.backend.lucene.DeleteDocumentsQueriesExecutor.java
License:Open Source License
@Override public void execute(IndexWriter w, DeleteDocumentsQueriesOperation op) throws IOException { w.deleteDocuments(op.getQueries()); }
From source file:net.dataforte.infinispan.amanuensis.backend.lucene.DeleteDocumentsTermsExecutor.java
License:Open Source License
@Override public void execute(IndexWriter w, DeleteDocumentsTermsOperation op) throws IOException { w.deleteDocuments(op.getTerms()); }