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

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

Introduction

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

Prototype

@Override
public final long commit() throws IOException 

Source Link

Document

Commits all pending changes (added and deleted documents, segment merges, added indexes, etc.) to the index, and syncs all referenced index files, such that a reader will see the changes and the index updates will survive an OS or machine crash or power loss.

Usage

From source file:org.moxie.proxy.LuceneExecutor.java

License:Apache License

/**
 * Incrementally update the index.// w w w  . j a v  a 2s  .c  om
 * 
 * @return pomFile
 */
private void incrementalIndex(File pomFile) {
    try {
        String repository = config.getRepositoryId(pomFile);
        IMavenCache cache = config.getMavenCache(repository);
        Pom pom = PomReader.readPom(cache, pomFile);

        delete(repository, pom);

        IndexWriter writer = getIndexWriter(repository);

        Document doc = new Document();
        doc.add(new Field(FIELD_PACKAGING, pom.packaging, Store.YES, Index.NOT_ANALYZED_NO_NORMS));
        doc.add(new Field(FIELD_GROUPID, pom.groupId, Store.YES, Index.ANALYZED));
        doc.add(new Field(FIELD_ARTIFACTID, pom.artifactId, Store.YES, Index.ANALYZED));
        doc.add(new Field(FIELD_VERSION, pom.version, Store.YES, Index.ANALYZED));
        if (!StringUtils.isEmpty(pom.name)) {
            doc.add(new Field(FIELD_NAME, pom.name, Store.YES, Index.ANALYZED));
        }
        if (!StringUtils.isEmpty(pom.description)) {
            doc.add(new Field(FIELD_DESCRIPTION, pom.description, Store.YES, Index.ANALYZED));
        }
        String date = DateTools.timeToString(pomFile.lastModified(), Resolution.MINUTE);
        doc.add(new Field(FIELD_DATE, date, Store.YES, Index.ANALYZED));

        // add the pom to the index
        writer.addDocument(doc);

        writer.commit();
        resetIndexSearcher(repository);

        config.resetRepositorySize(repository);
    } catch (Exception e) {
        logger.log(Level.SEVERE, "Exception while indexing " + pomFile, e);
    }
}

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);/*from w  w w .  j  a  v  a2  s .c om*/
    writer.commit();
    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 commit(LuceneSession session) {
    IndexWriter tiw = session.getIndexWriter();
    String namespace = session.getStoreDesc().getNamespace();
    try {// w w w .j a v  a2  s. com
        IndexReader ir = IndexReader.open(tiw, true);
        IndexWriter riw = getRealIndexWriter(namespace);
        deleteExistingDocs(session, riw);
        riw.addIndexes(ir);
        riw.maybeMerge();
        riw.commit();
        tiw.getDirectory().close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

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

License:Open Source License

public synchronized void addToIndex(LuceneSession session, Object obj) {
    IndexWriter iw = session.getIndexWriter();
    StoreDesc sdesc = session.getStoreDesc();
    String namespace = sdesc.getNamespace();
    try {//  w w  w.  j a  v  a 2  s  .c  om
        String entityName = getEntityName(obj);
        Object id = getId(obj, session.getPrimaryKey());
        //System.out.println("addToIndex:"+id+"/iw:"+iw); 
        Map p = new HashMap();
        p.put("view", "global-search");
        p.put(ENTITY, entityName);
        p.put(StoreDesc.STORE_ID, sdesc.getStoreId());
        p.put(StoreDesc.PACK, sdesc.getPack());
        List<Map> searchFields = m_settingService.getFieldsForEntityView(sdesc.getNamespace(), entityName,
                "global-search");
        Document doc = new Document();
        Field field = new Field(ENTITY, entityName, Field.Store.YES, Field.Index.NOT_ANALYZED);
        doc.add(field);
        if (id instanceof Long) {
            NumericField nfield = new NumericField("id_numeric", Field.Store.YES, true);
            nfield = nfield.setLongValue((Long) id);
            doc.add(nfield);
        }
        field = new Field("id", id.toString(), Field.Store.YES, Field.Index.NOT_ANALYZED);
        doc.add(field);
        populate(obj, searchFields, doc);
        String[] _id = new String[2];
        _id[0] = id.toString();
        _id[1] = entityName;
        session.addId(_id);
        iw.addDocument(doc);
        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

public synchronized void deleteFromIndex(LuceneSession session, Object obj) {
    StoreDesc sdesc = session.getStoreDesc();
    String namespace = sdesc.getNamespace();
    IndexWriter iw = getRealIndexWriter(namespace);
    try {/*from w w  w.  ja va  2 s  . c  o  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.mulgara.resolver.lucene.LuceneIndexerCache.java

License:Apache License

private void createIndex() throws IOException {
    IndexWriter writer = getWriter();
    try {/*w w w  .  java  2  s. c om*/
        writer.commit();
    } catch (Throwable t) {
        writer.close();
        throw (t instanceof IOException) ? (IOException) t : new IOException("Error creating new index", t);
    }
    returnWriter(writer, false);
}

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

License:Open Source License

/**
 * Delete previous indexed documents.//from  w  w w .ja v a2  s.  c  om
 * 
 * @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.legacy.WritableIndexReferenceFactoryTest.java

License:Open Source License

private void writeSomething(IndexReference indexReference) throws IOException {
    IndexWriter writer = indexReference.getWriter();
    writer.addDocument(new Document());
    writer.commit();
}

From source file:org.neo4j.index.lucene.repair.IndexHandler.java

License:Open Source License

public void deleteFieldFromNodeDocument(long nodeId, String fieldName) throws Exception {
    IndexReader reader = IndexReader.open(dir, false);
    Document newDoc = null;//from w  w w. j  a v a  2s  . c  o  m
    IndexSearcher searcher = new IndexSearcher(reader);
    TopDocs searchResult = searcher.search(new TermQuery(new Term("_id_", Long.toString(nodeId))), 2);

    if (searchResult.totalHits > 1) {
        throw new IllegalStateException(
                "There should be only one hit for node id " + nodeId + ", i got at least 2");
    }

    int docId = searchResult.scoreDocs[0].doc;
    Document original = reader.document(docId);

    newDoc = new Document();
    for (Fieldable f : original.getFields()) {
        if (!f.name().equals(fieldName)) {
            newDoc.add(f);
        }
    }
    reader.deleteDocument(docId);
    reader.commit(null);
    reader.close();

    IndexWriter writer = new IndexWriter(dir,
            new IndexWriterConfig(Version.LUCENE_35, new WhitespaceAnalyzer(Version.LUCENE_35)));
    writer.addDocument(newDoc);
    writer.commit();
    writer.close();
}

From source file:org.neo4j.kernel.api.impl.index.backup.LuceneIndexSnapshotFileIteratorTest.java

License:Open Source License

private static void insertRandomDocuments(IndexWriter writer) throws IOException {
    Document doc = new Document();
    doc.add(new StringField("a", "b", Field.Store.YES));
    doc.add(new StringField("c", "d", Field.Store.NO));
    writer.addDocument(doc);//from   w  ww . j a v a2s .  co m
    writer.commit();
}