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.moxie.proxy.LuceneExecutor.java

License:Apache License

private boolean delete(String repository, Pom pom) throws IOException {
    BooleanQuery query = new BooleanQuery();
    Term groupTerm = new Term(FIELD_GROUPID, pom.groupId);
    query.add(new TermQuery(groupTerm), Occur.MUST);
    Term artifactTerm = new Term(FIELD_ARTIFACTID, pom.artifactId);
    query.add(new TermQuery(artifactTerm), Occur.MUST);
    Term versionTerm = new Term(FIELD_VERSION, pom.version);
    query.add(new TermQuery(versionTerm), Occur.MUST);

    IndexWriter writer = getIndexWriter(repository);
    int numDocsBefore = writer.numDocs();
    writer.deleteDocuments(query);
    writer.commit();//from   w w w  .j a  v a 2 s . c o  m
    int numDocsAfter = writer.numDocs();
    if (numDocsBefore == numDocsAfter) {
        logger.fine(MessageFormat.format("no records found to delete {0}", query.toString()));
        return false;
    } else {
        logger.fine(MessageFormat.format("deleted {0} records with {1}", numDocsBefore - numDocsAfter,
                query.toString()));
        return true;
    }
}

From source file:org.ms123.common.data.lucene.LuceneServiceImpl.java

License:Open Source License

public synchronized void deleteFromIndex(LuceneSession session, Object obj) {
    StoreDesc sdesc = session.getStoreDesc();
    String namespace = sdesc.getNamespace();
    IndexWriter iw = getRealIndexWriter(namespace);
    try {//  www .  j a  v  a2s  .  co m
        String entityName = getEntityName(obj);
        Object id = PropertyUtils.getProperty(obj, session.getPrimaryKey());
        Term term1 = new Term("id", id.toString());
        Term term2 = new Term(ENTITY, entityName);
        TermQuery query1 = new TermQuery(term1);
        TermQuery query2 = new TermQuery(term2);
        BooleanQuery and = new BooleanQuery();
        and.add(query1, BooleanClause.Occur.MUST);
        and.add(query2, BooleanClause.Occur.MUST);
        IndexSearcher is = getIndexSearcher(namespace, iw);
        TopDocs hits = is.search(and, 10);
        if (hits.scoreDocs.length == 0) {
            System.out.println("LuceneServiceImpl.deleteFromIndex:id(" + id + ") not found");
        } else if (hits.scoreDocs.length == 1) {
            System.out.println("LuceneServiceImpl.deleting:" + and);
            iw.deleteDocuments(and);
        } else if (hits.scoreDocs.length > 1) {
            throw new IllegalArgumentException(
                    "LuceneServiceImpl.delete:Term (" + and + ") matches more than 1 document in the index.");
        }
        iw.commit();
    } catch (Exception e) {
        try {
            iw.rollback();
        } catch (Exception x) {
        }
        e.printStackTrace();
        throw new RuntimeException(e);
    }
}

From source file:org.ms123.common.data.lucene.LuceneServiceImpl.java

License:Open Source License

private synchronized void deleteExistingDocs(LuceneSession session, IndexWriter iw) throws Exception {
    List<String[]> idlist = session.getIdList();
    IndexSearcher is = getIndexSearcher(session.getStoreDesc().getNamespace(), iw);
    for (int i = 0; i < idlist.size(); i++) {
        String[] _id = idlist.get(i);
        Term term1 = new Term("id", _id[0]);
        Term term2 = new Term(ENTITY, _id[1]);
        TermQuery query1 = new TermQuery(term1);
        TermQuery query2 = new TermQuery(term2);
        BooleanQuery and = new BooleanQuery();
        and.add(query1, BooleanClause.Occur.MUST);
        and.add(query2, BooleanClause.Occur.MUST);
        TopDocs hits = is.search(and, 10);
        if (hits.scoreDocs.length == 1) {
            iw.deleteDocuments(and);
        } else if (hits.scoreDocs.length > 1) {
            throw new IllegalArgumentException(
                    "LuceneServiceImpl.add:Term (" + and + ") matches more than 1 document in the index.");
        }//from w ww.j  a va  2 s.com
    }
}

From source file:org.musicbrainz.search.index.DatabaseIndex.java

License:Open Source License

public void updateMetaInformation(IndexWriter indexWriter, ReplicationInformation info) throws IOException {

    // Remove the old one
    Term term = new Term(MetaIndexField.META.getName(), MetaIndexField.META_VALUE);
    TermQuery query = new TermQuery(term);
    indexWriter.deleteDocuments(query);

    // And the new one
    addMetaInformation(indexWriter, info);
}

From source file:org.nabucco.adapter.lucene.impl.connector.ra.spi.LuceneIndexServiceImpl.java

License:Open Source License

/**
 * Delete previous indexed documents.// w w  w . ja v a 2s  .  co m
 * 
 * @param document
 *            the document
 * @param index
 *            the index
 * @param writer
 *            the index writer
 * 
 * @throws IOException
 *             when the documents cannot be deleted
 */
private void deletePreviousIndexedDocument(FulltextDocument document, String index, IndexWriter writer)
        throws IOException {

    SearchIndexExtension extension = this.mapping.getIndexExtension(index);

    if (extension == null || extension.getKey() == null || extension.getKey().getValue() == null) {
        logger.warning("No search index extension configured.");
        return;
    }

    String keyField = extension.getKey().getValue().getValue();
    if (logger.isDebugEnabled()) {
        logger.info("Trying to delete existing index entry for key field [", keyField, "].");
    }

    for (FulltextField field : document.getFieldList()) {

        if (field.getFieldName().getValue().equals(keyField)) {
            Term term;
            if (field.getFieldValue() == null) {
                term = new Term(keyField, "");
            } else {
                term = new Term(keyField, field.getFieldValue().getValue());
            }
            writer.deleteDocuments(term);

            if (logger.isDebugEnabled()) {
                logger.info("Deleting existing index entry [", field.getFieldValue().getValue(), "].");
            }
        }
    }

    writer.commit();
}

From source file:org.neo4j.index.impl.lucene.CommitContext.java

License:Open Source License

private void applyDocuments(IndexWriter writer, IndexType type, Map<Long, DocumentContext> documents)
        throws IOException {
    for (Map.Entry<Long, DocumentContext> entry : documents.entrySet()) {
        DocumentContext context = entry.getValue();
        if (context.exists) {
            if (LuceneDataSource.documentIsEmpty(context.document)) {
                writer.deleteDocuments(type.idTerm(context.entityId));
            } else {
                writer.updateDocument(type.idTerm(context.entityId), context.document);
            }/*from  ww  w  .j a v  a 2s  . c  o m*/
        } else {
            writer.addDocument(context.document);
        }
    }
}

From source file:org.neo4j.index.impl.lucene.LuceneDataSource.java

License:Open Source License

static void remove(IndexWriter writer, Query query) {
    try {//from ww  w  .  j a v  a2  s .  c  om
        // TODO
        writer.deleteDocuments(query);
    } catch (IOException e) {
        throw new RuntimeException("Unable to delete for " + query + " using" + writer, e);
    }
}

From source file:org.neo4j.index.impl.lucene.LuceneUtil.java

License:Open Source License

static void strictRemoveDocument(IndexWriter writer, Query query) {
    try {/*from w  ww. j  av a2s. co  m*/
        writer.deleteDocuments(query);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

From source file:org.neo4j.index.lucene.LuceneDataSource.java

License:Open Source License

protected boolean deleteDocumentsUsingWriter(IndexWriter writer, Long nodeId, String key, Object value) {
    try {/*from   ww  w. ja  v  a  2 s.c om*/
        if (nodeId == null && value == null) {
            writer.close();
            deleteIndex(key);
            return true;
        } else {
            BooleanQuery query = new BooleanQuery();
            if (value != null) {
                query.add(new TermQuery(new Term(getDeleteDocumentsKey(), value.toString())), Occur.MUST);
            }
            query.add(new TermQuery(new Term(LuceneIndexService.DOC_ID_KEY, "" + nodeId)), Occur.MUST);
            writer.deleteDocuments(query);
            return false;
        }
    } catch (IOException e) {
        throw new RuntimeException("Unable to delete for " + nodeId + "," + "," + value + " using" + writer, e);
    }
}

From source file:org.netbeans.modules.jackpot30.indexing.index.Indexer.java

License:Open Source License

@Override
public void process(@NonNull CompilationUnitTree toProcess, @NonNull Indexable indexable,
        @NonNull Lookup services) {/*from   w  w  w .  j a v  a  2  s  .  c  o m*/
    IndexWriter luceneWriter = access.getIndexWriter(root, cacheRoot, INDEX_NAME);
    String relative = access.getRelativePath(indexable);
    ByteArrayOutputStream out = null;
    EncodingContext ec;

    try {
        out = new ByteArrayOutputStream();

        ec = new EncodingContext(out, false);

        BulkSearch.getDefault().encode(toProcess, ec, new AtomicBoolean());

        luceneWriter.deleteDocuments(new Term("languagePath", relative));

        Document doc = new Document();

        doc.add(new Field("languageContent", new TokenStreamImpl(ec.getContent())));
        out.close();
        doc.add(new Field("languageEncoded", CompressionTools.compress(out.toByteArray()), Field.Store.YES));
        doc.add(new Field("languagePath", relative, Field.Store.YES, Field.Index.NOT_ANALYZED));

        if (services != null) {
            final Set<String> erased = new HashSet<String>();
            final Trees trees = services.lookup(Trees.class);
            final Types types = services.lookup(Types.class);

            new TreePathScanner<Void, Void>() {
                @Override
                public Void scan(Tree tree, Void p) {
                    if (tree != null) {
                        TreePath tp = new TreePath(getCurrentPath(), tree);
                        TypeMirror type = trees.getTypeMirror(tp);

                        if (type != null) {
                            if (type.getKind() == TypeKind.ARRAY) {
                                erased.add(types.erasure(type).toString());
                                type = ((ArrayType) type).getComponentType();
                            }

                            if (type.getKind().isPrimitive() || type.getKind() == TypeKind.DECLARED) {
                                addErasedTypeAndSuperTypes(types, erased, type);
                            }
                        }

                        //bounds for type variables!!!
                    }
                    return super.scan(tree, p);
                }
            }.scan(toProcess, null);

            doc.add(new Field("languageErasedTypes", new TokenStreamImpl(erased)));
        }

        luceneWriter.addDocument(doc);
    } catch (ThreadDeath td) {
        throw td;
    } catch (Throwable t) {
        Logger.getLogger(Indexer.class.getName()).log(Level.WARNING, null, t);
    } finally {
        if (out != null) {
            try {
                out.close();
            } catch (IOException ex) {
                Exceptions.printStackTrace(ex);
            }
        }
    }
}