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:de.uni_koeln.spinfo.maalr.lucene.core.DictionaryCreator.java

License:Apache License

void update(LexEntry entry) throws IOException {
    IndexWriter writer = initIndexWriter();
    Term queryTerm = new Term(LexEntry.ID, entry.getId());
    writer.deleteDocuments(queryTerm);
    if (entry.getCurrent() != null) {
        List<Document> docs = createDocument(entry);
        for (Document document : docs) {
            writer.addDocument(document);
        }//w  ww . j a  v  a2s  . c  o  m
    }
    writer.close();
}

From source file:de.uni_koeln.spinfo.maalr.lucene.core.DictionaryCreator.java

License:Apache License

void delete(LexEntry entry) throws IOException {
    IndexWriter writer = initIndexWriter();
    Term queryTerm = new Term(LexEntry.ID, entry.getId());
    writer.deleteDocuments(queryTerm);
    writer.commit();/*from ww  w. ja v a 2  s .  c  om*/
    writer.close();
}

From source file:de.uni_koeln.spinfo.maalr.lucene.core.DictionaryLoader.java

License:Apache License

void update(LexEntry entry) throws IOException {
    IndexWriter writer = initIndexWriter();
    Term queryTerm = new Term(LexEntry.ID, entry.getId());
    writer.deleteDocuments(queryTerm);
    if (entry.getCurrent() != null) {
        List<Document> docs = createDocument(new HashSet<String>(), entry);
        for (Document document : docs) {
            writer.addDocument(document);
        }//from   ww  w. j  a v a 2s  .c o m
    }
    writer.commit();
    writer.close();
    reader.close();
    reader = DirectoryReader.open(ram);
    searcher = new IndexSearcher(reader);
}

From source file:de.uni_koeln.spinfo.maalr.lucene.core.DictionaryLoader.java

License:Apache License

void delete(LexEntry entry) throws IOException {
    IndexWriter writer = initIndexWriter();
    Term queryTerm = new Term(LexEntry.ID, entry.getId());
    writer.deleteDocuments(queryTerm);
    writer.commit();/*ww  w .  j  a  v a  2  s  .  c o m*/
    writer.close();
    reader.close();
    reader = DirectoryReader.open(ram);
    searcher = new IndexSearcher(reader);
}

From source file:dk.dma.msinm.lucene.AbstractLuceneIndex.java

License:Open Source License

/**
 * Deletes the given entity from the index
 *
 * @param entity the entity to delete//w ww  .jav a  2 s  .co m
 */
protected void deleteEntityFromIndex(IndexWriter writer, T entity) {
    try {
        Term idTerm = new Term(ID_FIELD, entity.getId().toString());
        writer.deleteDocuments(idTerm);
    } catch (IOException e) {
        log.debug("Error deleting entity " + entity.getId());
    }
}

From source file:edu.harvard.iq.dvn.core.index.Indexer.java

License:Apache License

public void deleteDocument(long studyId) {
    IndexWriter deleteWriter = null;

    try {//w  ww  . ja  v  a 2 s .c o m
        while (IndexWriter.isLocked(dir))
            ;

        // TODO: 
        // Figure out why we are using *IndexReader*, not Writer, for 
        // this operation in the first place? -- L.A.
        // (this will become a moot point if we upgrade to the next 
        // version of Lucene; then we'll be forced to use IndexWriter 
        // for all operations that modify the index)

        //reader = IndexReader.open(dir, false);
        deleteWriter = new IndexWriter(dir, getAnalyzer(), isIndexEmpty(),
                IndexWriter.MaxFieldLength.UNLIMITED);
        deleteWriter.deleteDocuments(new Term("id", Long.toString(studyId)));
        deleteWriter.deleteDocuments(new Term("varStudyId", Long.toString(studyId)));
        deleteWriter.deleteDocuments(new Term("versionStudyId", Long.toString(studyId)));
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        if (deleteWriter != null) {
            try {
                deleteWriter.close();
            } catch (Exception ex) {

            }
        }
    }
}

From source file:edu.harvard.iq.dvn.core.index.Indexer.java

License:Apache License

public void deleteDocumentCarefully(long studyId) throws IOException {
    IndexWriter deleteWriter = null;
    boolean success = true;
    String errorMessage = "";

    try {//from  w  w  w . j a  v a 2  s .c  o m
        //while (IndexWriter.isLocked(dir));

        // TODO: 
        // Figure out why we are using *IndexReader*, not Writer, for 
        // this operation in the first place? -- L.A.
        // (this will become a moot point if we upgrade to the next 
        // version of Lucene; then we'll be forced to use IndexWriter 
        // for all operations that modify the index)

        //reader = IndexReader.open(dir, false);
        deleteWriter = new IndexWriter(dir, getAnalyzer(), isIndexEmpty(),
                IndexWriter.MaxFieldLength.UNLIMITED);
        deleteWriter.deleteDocuments(new Term("id", Long.toString(studyId)));
        deleteWriter.deleteDocuments(new Term("varStudyId", Long.toString(studyId)));
        deleteWriter.deleteDocuments(new Term("versionStudyId", Long.toString(studyId)));
    } catch (Exception ex) {
        success = false;
        errorMessage = "Caught an exception trying to delete index document for study " + studyId + "; "
                + ex.getMessage();
        logger.info(errorMessage);
        ex.printStackTrace();
    } finally {
        if (deleteWriter != null) {
            try {
                deleteWriter.close();
                // Should I be checking for, and deleting a lock file 
                // left behind??
            } catch (Exception ex) {
                logger.fine("Caught an exception trying to close the index reader.");
                // I'm guessing this is not a super dangerous condition...
                // IndexReaders does try to put a lock on the 
                // index files... so in theory it could be dangerous -
                // as we may be leaving such a lock behind (?). -- L.A. 

            }
        }
    }

    if (!success) {
        throw new IOException(errorMessage);
    }
}

From source file:edu.stanford.muse.index.Indexer.java

License:Apache License

private synchronized int removeEmailDocs(Collection<? extends edu.stanford.muse.index.Document> docs)
        throws IOException {
    if (iwriter != null) {
        throw new IOException("iwriter is not null. prepareForSerialization() should be called first.");
    }/*from ww  w  . jav  a 2  s  .c om*/

    if (isearcher != null) {
        isearcher.getIndexReader().close();
        isearcher = null;
    }

    stats = null; // stats no longer valid

    int count = docIdToEmailDoc.size();

    IndexWriterConfig cfg = new IndexWriterConfig(LUCENE_VERSION, analyzer);
    IndexWriter writer = new IndexWriter(directory, cfg);
    //IndexWriter writer = new IndexWriter(directory, analyzer, false, new IndexWriter.MaxFieldLength(250000));
    assert (writer.numDocs() == docIdToEmailDoc.size());

    for (edu.stanford.muse.index.Document d : docs) {
        String id = d.getUniqueId();
        EmailDocument ed = docIdToEmailDoc.get(id);
        assert (d == ed);
        docIdToEmailDoc.remove(id);
        writer.deleteDocuments(new TermQuery(new Term("docId", id)));
        log.info("Removed doc " + id + " from index");
    }

    writer.commit();

    assert (writer.numDocs() == docIdToEmailDoc.size());

    writer.close();

    count -= docIdToEmailDoc.size(); // number of removed docs
    assert (count == docs.size());
    return count;
}

From source file:edu.ur.ir.groupspace.service.DefaultGroupWorkspaceIndexService.java

License:Apache License

public void delete(Long groupWorkspaceId, File indexFolder) {
    if (log.isDebugEnabled()) {
        log.debug("deleting researcher id : " + groupWorkspaceId + " from index folder "
                + indexFolder.getAbsolutePath());
    }//from   ww  w. j  a v a2  s.  c om
    // if the researcher does not have an index folder
    // don't need to do anything.
    if (indexFolder == null || !indexFolder.exists() || indexFolder.list() == null
            || indexFolder.list().length == 0) {
        return;
    }

    Directory directory = null;
    IndexWriter writer = null;
    try {
        directory = FSDirectory.open(indexFolder);
        writer = getWriter(directory);
        Term term = new Term(ID, NumericUtils.longToPrefixCoded(groupWorkspaceId));
        writer.deleteDocuments(term);
        writer.commit();

    } catch (Exception e) {
        log.error(e);
        errorEmailService.sendError(e);
    } finally {
        if (writer != null) {
            try {
                writer.close();
            } catch (Exception e) {
                log.error(e);
            }
        }
        writer = null;
        try {
            IndexWriter.unlock(directory);
        } catch (IOException e1) {
            log.error(e1);
        }

        if (directory != null) {
            try {
                directory.close();
            } catch (Exception e) {
                log.error(e);
            }
        }
        directory = null;
    }

}

From source file:edu.ur.ir.institution.service.DefaultInstitutionalCollectionIndexService.java

License:Apache License

/**
 * Delete the collection in the index./*from w  w  w.  ja  v  a2s.c om*/
 * 
 * @param collectionId - id of the collection
 * @param collectionIndexFolder  - folder location of the collection index
 * @see edu.ur.ir.institution.InstitutionalCollectionIndexService#deleteFromIndex(java.lang.Long, java.io.File)
 */
public void delete(Long collectionId, File collectionIndexFolder) {
    if (log.isDebugEnabled()) {
        log.debug("deleting collection id : " + collectionId + " from index folder "
                + collectionIndexFolder.getAbsolutePath());
    }
    // if there is not collection folder then don't do anything
    if (collectionIndexFolder == null || !collectionIndexFolder.exists() || collectionIndexFolder.list() == null
            || collectionIndexFolder.list().length == 0) {
        return;
    }

    Directory directory = null;
    IndexWriter writer = null;
    try {
        directory = FSDirectory.open(collectionIndexFolder);
        writer = getWriter(directory);
        Term term = new Term(ID, NumericUtils.longToPrefixCoded(collectionId));
        writer.deleteDocuments(term);
        writer.commit();

    } catch (Exception e) {
        log.error(e);
        errorEmailService.sendError(e);
    } finally {
        try {
            writer.close();
        } catch (Exception e) {
            log.error(e);
            try {
                if (IndexWriter.isLocked(directory)) {
                    IndexWriter.unlock(directory);
                }
            } catch (IOException e1) {
                log.error(e1);
            }
        }
        writer = null;

        if (directory != null) {
            try {
                directory.close();
            } catch (Exception e) {
                log.error(e);
            }
        }
        directory = null;
    }

}