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.frontcache.cache.impl.LuceneIndexManager.java

License:Apache License

/**
 * Removes documents by url or tags/*w  w w  .  j a  va 2 s .co m*/
 * @param urlOrTag
 */
public void delete(String domain, String urlOrTag) {

    IndexWriter iWriter = null;
    try {
        iWriter = getIndexWriter();
        if (iWriter == null) {
            return;
        }
    } catch (Exception e1) {
        logger.debug("Error during getting indexWriter. " + e1.getMessage());
        return;
    }

    try {
        //         Query domainQuery = new TermQuery(new Term(DOMAIN_FIELD, domain));
        Query urlQuery = new TermQuery(new Term(URL_FIELD, urlOrTag));
        Query tagsQuery = new TermQuery(new Term(TAGS_FIELD, urlOrTag));

        BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder();

        //         booleanQuery.add(domainQuery, Occur.MUST);
        booleanQuery.add(urlQuery, Occur.SHOULD);
        booleanQuery.add(tagsQuery, Occur.SHOULD);

        long count = iWriter.deleteDocuments(booleanQuery.build());
        logger.debug("Removed  {} documents for {}.", count, urlOrTag);
    } catch (IOException e) {
        logger.error(e.getMessage(), e);
    } finally {
        try {
            iWriter.commit();
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
    }
}

From source file:org.frontcache.cache.impl.LuceneIndexManager.java

License:Apache License

public void delete(String urlOrTag) {

    IndexWriter iWriter = null;
    try {/*from  w  w w.j  a va2 s . c  o m*/
        iWriter = getIndexWriter();
        if (iWriter == null) {
            return;
        }
    } catch (Exception e1) {
        logger.debug("Error during getting indexWriter. " + e1.getMessage());
        return;
    }

    try {
        Query urlQuery = new TermQuery(new Term(URL_FIELD, urlOrTag));
        Query tagsQuery = new TermQuery(new Term(TAGS_FIELD, urlOrTag));

        BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder();

        booleanQuery.add(urlQuery, Occur.SHOULD);
        booleanQuery.add(tagsQuery, Occur.SHOULD);

        long count = iWriter.deleteDocuments(booleanQuery.build());
        logger.debug("Removed  {} documents for {}.", count, urlOrTag);
    } catch (IOException e) {
        logger.error(e.getMessage(), e);
    } finally {
        try {
            iWriter.commit();
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
    }
}

From source file:org.frontcache.cache.impl.LuceneIndexManager.java

License:Apache License

/**
 * Removes documents by url or tags/*from  w w  w .  j  a  va  2  s .  c om*/
 * @param urlOrTag
 */
public void deleteAll(String domain) {

    if (null == domain) {
        logger.error("Cant delete all with null domain");
        return;
    }

    IndexWriter iWriter = null;
    try {
        iWriter = getIndexWriter();
        if (iWriter == null) {
            return;
        }
    } catch (Exception e1) {
        logger.debug("Error during getting indexWriter. " + e1.getMessage());
        return;
    }

    try {
        logger.debug("Removing all documents for {}.", domain);

        Query domainQuery = new TermQuery(new Term(DOMAIN_FIELD, domain));

        long count = iWriter.deleteDocuments(domainQuery);
        logger.debug("Removed  {} documents for {}.", count, domain);
    } catch (IOException e) {
        logger.error(e.getMessage(), e);
    } finally {
        try {
            iWriter.commit();
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
    }
}

From source file:org.geotoolkit.lucene.index.AbstractIndexer.java

License:Open Source License

/**
 * This method remove index of lucene a document identified by identifier.
 *
 * @param identifier//ww  w. ja v  a 2  s .c o m
 */
public void removeDocument(final String identifier) {
    try {
        final Directory dir = LuceneUtils.getAppropriateDirectory(getFileDirectory());
        final Term t = new Term("id", identifier);
        final TermQuery query = new TermQuery(t);
        LOGGER.log(logLevel, "Term query:{0}", query);

        // look for DOC ID for R-Tree removal
        final NamedEnvelope env = new NamedEnvelope(getTreeCrs(), identifier);
        final TreeElementMapper<NamedEnvelope> mapper = rTree.getTreeElementMapper();
        final int treeID = mapper.getTreeIdentifier(env);
        if (treeID != -1) {
            final NamedEnvelope realEnv = mapper.getObjectFromTreeIdentifier(treeID);
            boolean removed = rTree.remove(realEnv);
            if (!removed) {
                LOGGER.log(Level.WARNING, "unable to remove envelope for:{0}", identifier);
            } else {
                //remove from mapper
                mapper.setTreeIdentifier(null, treeID);
                mapper.flush();
                rTree.flush();
            }
        }

        final IndexWriterConfig config = new IndexWriterConfig(analyzer);
        final IndexWriter writer = new IndexWriter(dir, config);
        writer.deleteDocuments(query);
        LOGGER.log(logLevel, "Metadata: {0} removed from the index", identifier);

        writer.commit();
        writer.close();

    } catch (CorruptIndexException ex) {
        LOGGER.log(Level.WARNING, "CorruptIndexException while indexing document: " + ex.getMessage(), ex);
    } catch (IOException ex) {
        LOGGER.log(Level.WARNING, "IOException while indexing document: " + ex.getMessage(), ex);
    } catch (StoreIndexException ex) {
        LOGGER.log(Level.WARNING, "StoreIndexException while indexing document: " + ex.getMessage(), ex);
    }
}

From source file:org.getopt.luke.Luke.java

License:Apache License

public void deleteTermDoc(Object fText) {
    Term t = (Term) getProperty(fText, "term");
    if (t == null)
        return;// w  w w  .j  a va  2s.  c  om
    if (ir == null) {
        showStatus(MSG_NOINDEX);
        return;
    }
    if (readOnly) {
        showStatus(MSG_READONLY);
        return;
    }
    try {
        IndexWriter iw = createIndexWriter();
        iw.deleteDocuments(t);
        iw.close();
        refreshAfterWrite();
        infoMsg("Deleted docs for query '" + t
                + "'. Term dictionary and statistics will be incorrect until next merge or expunge deletes.");
    } catch (Exception e) {
        e.printStackTrace();
        errorMsg("Error deleting doc: " + e.toString());
    }
}

From source file:org.getopt.luke.Luke.java

License:Apache License

public void deleteDocs(Object sTable) {
    if (ir == null) {
        showStatus(MSG_NOINDEX);/*from   w ww  .  j  a  v a  2s .co m*/
        return;
    }
    if (readOnly) {
        showStatus(MSG_READONLY);
        return;
    }
    Query q = (Query) getProperty(sTable, "query");
    if (q == null) {
        errorMsg("Empty query.");
        return;
    }
    removeAll(sTable);
    try {
        IndexWriter iw = createIndexWriter();
        iw.deleteDocuments(q);
        iw.close();
        refreshAfterWrite();
        infoMsg("Deleted docs for query '" + q
                + "'. Term dictionary and statistics will be incorrect until next merge or expunge deletes.");
    } catch (Throwable e) {
        e.printStackTrace();
        errorMsg("Error deleting documents: " + e.toString());
    }
}

From source file:org.hibernate.search.backend.impl.lucene.works.ByTermDeleteWorkDelegate.java

License:LGPL

@Override
public void performWork(LuceneWork work, IndexWriter writer, IndexingMonitor monitor) {
    final Class<?> managedType = work.getEntityClass();
    DocumentBuilderIndexedEntity builder = workspace.getDocumentBuilder(managedType);
    Serializable id = work.getId();
    log.tracef("Removing %s#%s by id using an IndexWriter.", managedType, id);
    try {//  w  w  w .ja  va  2  s .co  m
        if (isIdNumeric(builder)) {
            writer.deleteDocuments(NumericFieldUtils.createExactMatchQuery(builder.getIdKeywordName(), id));
        } else {
            Term idTerm = new Term(builder.getIdKeywordName(), work.getIdInString());
            writer.deleteDocuments(idTerm);
        }
        workspace.notifyWorkApplied(work);
    } catch (Exception e) {
        String message = "Unable to remove " + managedType + "#" + id + " from index.";
        throw new SearchException(message, e);
    }
}

From source file:org.hibernate.search.backend.impl.lucene.works.ByTermUpdateWorkDelegate.java

License:LGPL

@Override
public void performWork(LuceneWork work, IndexWriter writer, IndexingMonitor monitor) {
    final Serializable id = work.getId();
    final Class<?> managedType = work.getEntityClass();
    DocumentBuilderIndexedEntity builder = workspace.getDocumentBuilder(managedType);
    try {//from www . j a v  a2s . c  om
        if (DeleteWorkDelegate.isIdNumeric(builder)) {
            log.tracef("Deleting %s#%s by query using an IndexWriter#updateDocument as id is Numeric",
                    managedType, id);
            writer.deleteDocuments(NumericFieldUtils.createExactMatchQuery(builder.getIdKeywordName(), id));
            // no need to log the Add operation as we'll log in the delegate
            this.addDelegate.performWork(work, writer, monitor);
        } else {
            log.tracef("Updating %s#%s by id using an IndexWriter#updateDocument.", managedType, id);
            Term idTerm = new Term(builder.getIdKeywordName(), work.getIdInString());
            Map<String, String> fieldToAnalyzerMap = work.getFieldToAnalyzerMap();
            ScopedAnalyzer analyzer = builder.getAnalyzer();
            analyzer = AddWorkDelegate.updateAnalyzerMappings(workspace, analyzer, fieldToAnalyzerMap);
            writer.updateDocument(idTerm, work.getDocument(), analyzer);
        }
        workspace.notifyWorkApplied(work);
    } catch (Exception e) {
        String message = "Unable to update " + managedType + "#" + id + " in index.";
        throw new SearchException(message, e);
    }
    if (monitor != null) {
        monitor.documentsAdded(1l);
    }
}

From source file:org.hibernate.search.backend.impl.lucene.works.DeleteByQueryWorkDelegate.java

License:LGPL

@Override
public void performWork(LuceneWork work, IndexWriter writer, IndexingMonitor monitor) {
    DeleteByQueryLuceneWork deleteWork = (DeleteByQueryLuceneWork) work;

    final Class<?> entityType = work.getEntityClass();
    final DeletionQuery query = deleteWork.getDeletionQuery();

    if (log.isTraceEnabled()) {
        log.tracef("Removing all %s matching Query: %s", entityType.toString(), query.toString());
    }/*  ww  w.j  a v  a2  s  . co  m*/

    BooleanQuery entityDeletionQuery = new BooleanQuery();

    {
        DeleteByQuerySupport.ToLuceneQuery converter = DeleteByQuerySupport
                .getToLuceneQuery(query.getQueryKey());

        ScopedAnalyzer analyzer = this.workspace.getDocumentBuilder(entityType).getAnalyzer();
        Query queryToDelete = converter.build(query, analyzer);

        entityDeletionQuery.add(queryToDelete, BooleanClause.Occur.MUST);
    }

    Term classNameQueryTerm = new Term(ProjectionConstants.OBJECT_CLASS, entityType.getName());
    TermQuery classNameQuery = new TermQuery(classNameQueryTerm);
    entityDeletionQuery.add(classNameQuery, BooleanClause.Occur.MUST);

    try {
        writer.deleteDocuments(entityDeletionQuery);
    } catch (IOException e) {
        SearchException ex = log.unableToDeleteByQuery(entityType, query, e);
        throw ex;
    }
    this.workspace.notifyWorkApplied(work);

}

From source file:org.hibernate.search.backend.impl.lucene.works.DeleteExtWorkDelegate.java

License:Open Source License

@Override
public void performWork(LuceneWork work, IndexWriter writer) {
    checkType(work);/*from   w  w  w .  jav  a  2s  . c o  m*/
    Serializable id = work.getId();
    log.tracef("Removing %s#%s by id using an IndexWriter.", managedType, id);
    try {
        if (idIsNumeric) {
            writer.deleteDocuments(NumericFieldUtils.createExactMatchQuery(builder.getIdKeywordName(), id));
        } else {
            Term idTerm = builder.getTerm(id);
            writer.deleteDocuments(idTerm);
        }
    } catch (Exception e) {
        String message = "Unable to remove " + managedType + "#" + id + " from index.";
        throw new SearchException(message, e);
    }
}