List of usage examples for org.apache.lucene.index IndexWriter deleteDocuments
public long deleteDocuments(Query... queries) throws IOException
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); } } } }