Example usage for org.apache.lucene.index IndexWriter deleteDocuments

List of usage examples for org.apache.lucene.index IndexWriter deleteDocuments

Introduction

In this page you can find the example usage for org.apache.lucene.index IndexWriter deleteDocuments.

Prototype

public long deleteDocuments(Query... queries) throws IOException 

Source Link

Document

Deletes the document(s) matching any of the provided queries.

Usage

From source file:org.infoglue.cms.controllers.kernel.impl.simple.LuceneController.java

License:Open Source License

public Map getIndexInformation() {
    Map info = new HashMap();

    try {//w w w .  ja v a  2s . c om
        String index = CmsPropertyHandler.getContextRootPath() + File.separator + "lucene" + File.separator
                + "index";

        boolean indexExists = IndexReader.indexExists(new File(index));
        if (!indexExists) {
            try {
                File INDEX_DIR = new File(index);
                IndexWriter writer = new IndexWriter(INDEX_DIR, new StandardAnalyzer());
                logger.info("Indexing to directory '" + INDEX_DIR + "'...");
                writer.deleteDocuments(new Term("initializer", "true"));
                logger.info("Optimizing...");
                writer.optimize();
                writer.close();
            } catch (Exception e) {
                logger.error("Error creating index:" + e.getMessage(), e);
            }
        }

        IndexReader reader = IndexReader.open(index);
        int maxDoc = reader.maxDoc();
        int numDoc = reader.numDocs();
        long lastModified = IndexReader.lastModified(index);

        info.put("maxDoc", new Integer(maxDoc));
        info.put("numDoc", new Integer(numDoc));
        info.put("lastModified", new Date(lastModified));

        reader.close();
    } catch (Exception e) {
        logger.error("Error creating index:" + e.getMessage(), e);
    }

    return info;
}

From source file:org.infoglue.cms.controllers.kernel.impl.simple.LuceneController.java

License:Open Source License

public void deleteIndex() {
    String index = CmsPropertyHandler.getContextRootPath() + File.separator + "lucene" + File.separator
            + "index";
    try {/*w ww . ja v  a  2 s  . c om*/
        File INDEX_DIR = new File(index);
        IndexWriter writer = new IndexWriter(INDEX_DIR, new StandardAnalyzer(), true);
        logger.info("Indexing to directory '" + INDEX_DIR + "'...");
        writer.deleteDocuments(new Term("initializer", "true"));
        logger.info("Optimizing...");
        writer.optimize();
        writer.close();
    } catch (Exception e) {
        logger.error("Error creating index:" + e.getMessage(), e);
    }
}

From source file:org.infoglue.cms.controllers.kernel.impl.simple.SearchController.java

License:Open Source License

private void deleteVersionFromIndex(String contentVersionId) {
    IndexWriter writer = null;
    try {/* ww  w  .ja  va  2s  . c  o m*/
        String index = CmsPropertyHandler.getContextRootPath() + File.separator + "lucene" + File.separator
                + "index";

        File INDEX_DIR = new File(index);
        writer = new IndexWriter(INDEX_DIR, new StandardAnalyzer());
        logger.info("Indexing to directory '" + INDEX_DIR + "'...");
        logger.info("Deleting contentVersionId:" + contentVersionId);
        writer.deleteDocuments(new Term("contentVersionId", "" + contentVersionId));
        logger.info("Optimizing...");
        writer.optimize();
        writer.close();
    } catch (Exception e) {
        logger.error("Error deleting index:" + e.getMessage(), e);
    }
}

From source file:org.jabylon.index.properties.impl.PropertyIndex.java

License:Open Source License

@Override
protected IStatus run(IProgressMonitor monitor) {
    IndexWriter writer = null;
    try {//from   www.j ava2 s.co  m
        writer = IndexActivator.getDefault().obtainIndexWriter();
        while (true) {
            DocumentTuple documentTuple = writes.poll(20, TimeUnit.SECONDS);
            if (documentTuple == null)
                break;
            List<Document> documents = documentTuple.getDocuments();
            switch (documentTuple.getAction()) {
            case CREATE:
                for (Document document : documents) {
                    writer.addDocument(document);
                }
                break;
            case DELETE:
                StringBuilder builder = new StringBuilder();
                CDOIDUtil.write(builder, documentTuple.getDescriptor().cdoID());
                writer.deleteDocuments(new Term(QueryService.FIELD_CDO_ID, builder.toString()));
                break;
            case REPLACE:
                writer.deleteDocuments(new Term(QueryService.FIELD_FULL_PATH,
                        documentTuple.getDescriptor().fullPath().toString()));
                for (Document document : documents) {
                    writer.addDocument(document);
                }
                break;

            default:
                break;
            }

        }
        writer.commit();

    } catch (CorruptIndexException e) {
        logger.error("Exception while indexing", e);
    } catch (LockObtainFailedException e) {
        logger.error("Exception while indexing", e);
    } catch (IOException e) {
        logger.error("Exception while indexing", e);
    } catch (InterruptedException e) {
        logger.warn("Interrupted while waiting for new index events", e);
    } finally {
        try {
            IndexActivator.getDefault().returnIndexWriter(writer);
        } catch (CorruptIndexException e) {
            logger.error("Exception while closing index writer", e);
        } catch (IOException e) {
            logger.error("Exception while closing index writer", e);
        }
    }

    return Status.OK_STATUS;
}

From source file:org.jamwiki.search.LuceneSearchEngine.java

License:LGPL

/**
 * Remove a topic from the search index.
 *
 * @param topic The topic object that is to be removed from the index.
 *//*from   w  w  w  .  java 2 s  .  c  o m*/
public synchronized void deleteFromIndex(Topic topic) {
    String virtualWiki = topic.getVirtualWiki();
    String topicName = topic.getName();
    IndexWriter writer = null;
    try {
        FSDirectory directory = FSDirectory.getDirectory(getSearchIndexPath(virtualWiki));
        // delete the current document
        // FIXME - move synchronization to the writer instance for this directory
        try {
            writer = new IndexWriter(directory, new StandardAnalyzer(), false);
            writer.deleteDocuments(new Term(ITYPE_TOPIC_PLAIN, topicName));
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (Exception e) {
                }
            }
        }
        directory.close();
    } catch (Exception e) {
        logger.severe("Exception while adding topic " + topicName, e);
    }
}

From source file:org.janusgraph.diskstorage.lucene.LuceneIndex.java

License:Apache License

private void mutateStores(Map.Entry<String, Map<String, IndexMutation>> stores,
        KeyInformation.IndexRetriever information) throws IOException, BackendException {
    IndexReader reader = null;//  www  . ja va 2s. co m
    try {
        final String storeName = stores.getKey();
        final IndexWriter writer = getWriter(storeName, information);
        reader = DirectoryReader.open(writer, true, true);
        final IndexSearcher searcher = new IndexSearcher(reader);
        for (final Map.Entry<String, IndexMutation> entry : stores.getValue().entrySet()) {
            final String documentId = entry.getKey();
            final IndexMutation mutation = entry.getValue();

            if (mutation.isDeleted()) {
                if (log.isTraceEnabled())
                    log.trace("Deleted entire document [{}]", documentId);

                writer.deleteDocuments(new Term(DOCID, documentId));
                continue;
            }

            final Pair<Document, Map<String, Shape>> docAndGeo = retrieveOrCreate(documentId, searcher);
            final Document doc = docAndGeo.getKey();
            final Map<String, Shape> geoFields = docAndGeo.getValue();

            Preconditions.checkNotNull(doc);
            for (final IndexEntry del : mutation.getDeletions()) {
                Preconditions.checkArgument(!del.hasMetaData(),
                        "Lucene index does not support indexing meta data: %s", del);
                final String key = del.field;
                if (doc.getField(key) != null) {
                    if (log.isTraceEnabled())
                        log.trace("Removing field [{}] on document [{}]", key, documentId);

                    doc.removeFields(key);
                    geoFields.remove(key);
                }
            }

            addToDocument(storeName, documentId, doc, mutation.getAdditions(), geoFields, information);

            //write the old document to the index with the modifications
            writer.updateDocument(new Term(DOCID, documentId), doc);
        }
        writer.commit();
    } finally {
        IOUtils.closeQuietly(reader);
    }
}

From source file:org.janusgraph.diskstorage.lucene.LuceneIndex.java

License:Apache License

@Override
public void restore(Map<String, Map<String, List<IndexEntry>>> documents,
        KeyInformation.IndexRetriever information, BaseTransaction tx) throws BackendException {
    writerLock.lock();/*from www.  ja va2  s .  com*/
    try {
        for (final Map.Entry<String, Map<String, List<IndexEntry>>> stores : documents.entrySet()) {
            final String store = stores.getKey();
            final IndexWriter writer = getWriter(store, information);
            final IndexReader reader = DirectoryReader.open(writer, true, true);
            final IndexSearcher searcher = new IndexSearcher(reader);

            for (final Map.Entry<String, List<IndexEntry>> entry : stores.getValue().entrySet()) {
                final String docID = entry.getKey();
                final List<IndexEntry> content = entry.getValue();

                if (content == null || content.isEmpty()) {
                    if (log.isTraceEnabled())
                        log.trace("Deleting document [{}]", docID);

                    writer.deleteDocuments(new Term(DOCID, docID));
                    continue;
                }

                final Pair<Document, Map<String, Shape>> docAndGeo = retrieveOrCreate(docID, searcher);
                addToDocument(store, docID, docAndGeo.getKey(), content, docAndGeo.getValue(), information);

                //write the old document to the index with the modifications
                writer.updateDocument(new Term(DOCID, docID), docAndGeo.getKey());
            }
            writer.commit();
        }
        tx.commit();
    } catch (final IOException e) {
        throw new TemporaryBackendException("Could not update Lucene index", e);
    } finally {
        writerLock.unlock();
    }
}

From source file:org.lexevs.dao.index.lucenesupport.BaseLuceneIndexTemplate.java

License:Open Source License

public void removeDocuments(final Term term) {
    this.doInIndexWriter(new IndexWriterCallback<Void>() {

        @Override//  w w w  .  j av  a 2 s .c  o  m
        public Void doInIndexWriter(IndexWriter indexWriter) throws Exception {
            indexWriter.deleteDocuments(term);
            return null;
        }
    });
}

From source file:org.lexevs.dao.index.lucenesupport.BaseLuceneIndexTemplate.java

License:Open Source License

public void removeDocuments(final Query query) {
    this.doInIndexWriter(new IndexWriterCallback<Void>() {

        @Override/*from w  w  w.  j  a  v  a  2  s .c  o m*/
        public Void doInIndexWriter(IndexWriter indexWriter) throws Exception {
            indexWriter.deleteDocuments(query);
            return null;
        }
    });
}

From source file:org.lexevs.dao.index.lucenesupport.MetaDataIndexTemplate.java

License:Open Source License

@Override
public void removeDocuments(final Term term) {
    this.doInIndexWriter(new IndexWriterCallback<Void>() {

        @Override// w  w w . j a  v a  2s . c om
        public Void doInIndexWriter(IndexWriter indexWriter) throws Exception {
            indexWriter.deleteDocuments(term);
            return null;
        }
    });
}