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:com.dreamerpartner.codereview.lucene.IndexHelper.java

License:Apache License

/**
 * ?//from  ww w . j  a  v  a  2s  .com
 * @param module ?
 * @param term ?
 * @throws IOException
 */
@SuppressWarnings("deprecation")
public static void delete(String module, Term... term) throws IOException {
    long beginTime = System.currentTimeMillis();
    IndexWriter writer = null;
    try {
        Directory dir = FSDirectory.open(new File(LuceneUtil.getIndexPath(module)));
        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_10_0);
        IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_4_10_0, analyzer);
        iwc.setMaxBufferedDocs(100);
        iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);
        writer = new IndexWriter(dir, iwc);
        writer.deleteDocuments(term);
        writer.commit();
    } finally {
        long endTime = System.currentTimeMillis();
        logger.debug(module + " delete " + (endTime - beginTime) + " milliseconds.");
        if (writer != null)
            writer.close();
    }
}

From source file:com.dreamerpartner.codereview.lucene.IndexHelper.java

License:Apache License

/**
 * ?/* w  ww.  j  a  va  2 s  .c om*/
 * @param module ?
 * @throws IOException
 */
@SuppressWarnings("deprecation")
public static void deleteAll(String module) throws IOException {
    long beginTime = System.currentTimeMillis();
    IndexWriter writer = null;
    try {
        Directory dir = FSDirectory.open(new File(LuceneUtil.getIndexPath(module)));
        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_10_0);
        IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_4_10_0, analyzer);
        iwc.setMaxBufferedDocs(100);
        iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);
        writer = new IndexWriter(dir, iwc);
        writer.deleteAll();
        writer.commit();
    } finally {
        long endTime = System.currentTimeMillis();
        logger.debug(module + " deleteAll " + (endTime - beginTime) + " milliseconds.");
        if (writer != null)
            writer.close();
    }
}

From source file:com.dreamerpartner.codereview.lucene.IndexHelper.java

License:Apache License

/**
 * ??//from  ww w  .  j  av  a2 s. co  m
 * @param module ?
 * @throws IOException
 */
@SuppressWarnings("deprecation")
public static void merge(String module) throws IOException {
    long beginTime = System.currentTimeMillis();
    IndexWriter writer = null;
    try {
        Directory dir = FSDirectory.open(new File(LuceneUtil.getIndexPath(module)));
        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_10_0);
        IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_4_10_0, analyzer);
        iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);
        writer = new IndexWriter(dir, iwc);
        //??
        writer.forceMerge(1);
        writer.commit();
    } finally {
        long endTime = System.currentTimeMillis();
        logger.debug("merge consume " + (endTime - beginTime) + " milliseconds.");
        if (writer != null)
            writer.close();
    }
}

From source file:com.edgenius.wiki.search.lucene.IndexWriterTemplate.java

License:Open Source License

public void deleteDocuments(Term term) {
    IndexWriter writer = indexFactory.getIndexWriter();
    try {/*from   ww w  .  ja v  a2s  .c o m*/
        writer.deleteDocuments(term);
        writer.commit();
    } catch (IOException ex) {
        log.error("Error during deleting a document", ex);
        throw new IndexAccessException("Error during deleting a document.", ex);
    }
}

From source file:com.edgenius.wiki.search.lucene.IndexWriterTemplate.java

License:Open Source License

public void addDocument(IndexCallback callback) {

    IndexWriter writer = indexFactory.getIndexWriter();
    try {// ww w. j  av  a2s .c o m
        callback.addDocument(writer);
        writer.commit();
    } catch (IOException ex) {
        log.error("Error during deleting a document", ex);
        throw new IndexAccessException("Error during deleting a document.", ex);
    }

}

From source file:com.edgenius.wiki.search.lucene.IndexWriterTemplate.java

License:Open Source License

/**
 * @param documentCreator/*  ww w  .j  a  v a 2s . com*/
 */
public void addDocument(Document document) {
    IndexWriter writer = indexFactory.getIndexWriter();
    try {
        writer.addDocument(document);
        writer.commit();
    } catch (IOException ex) {
        log.error("Error during add a document", ex);
        throw new IndexAccessException("Error during add a document.", ex);
    }
}

From source file:com.edgenius.wiki.search.lucene.IndexWriterTemplate.java

License:Open Source License

/**
 * //from ww w .  j  a  va 2 s  . com
 */
public void optimize() {
    IndexWriter writer = indexFactory.getIndexWriter();
    try {
        writer.optimize();
        writer.commit();
    } catch (IOException ex) {
        log.error("Error during optimize documents", ex);
        throw new IndexAccessException("Error optimize documents.", ex);
    }
}

From source file:com.epimorphics.server.indexers.LuceneIndex.java

License:Apache License

protected void doCommit() {
    IndexWriter writer = getIndexWriter();
    try {/*from   w w w  .j a v a2  s  . c  om*/
        writer.commit();
    } catch (Exception e) {
        // try to save the data
        try {
            writer.close();
        } catch (IOException e1) {
            // Do nothing, we've already taken our best shot
            log.error("Failed to even close index writer after commit error", e);
        }
        throw new EpiException(e);
    }
}

From source file:com.esri.gpt.catalog.lucene.LuceneIndexAdapter.java

License:Apache License

/**
 * Closes an index writer.//from  ww  w.j a  va 2 s.c  o m
 * @param writer the writer to close.
 */
protected void closeWriter(IndexWriter writer) {

    if (this.useSingleWriter) {
        try {
            if (writer != null) {
                getLogger().finer("Committing Lucene IndexWriter...");
                writer.commit();
            }
        } catch (CorruptIndexException e) {
            getLogger().log(Level.SEVERE, "Error on IndexWriter.commit", e);
        } catch (IOException e) {
            getLogger().log(Level.SEVERE, "Error on IndexWriter.commit", e);
        } catch (OutOfMemoryError e) {
            getLogger().log(Level.SEVERE, "Error on IndexWriter.commit", e);
            try {
                writer.close();
            } catch (CorruptIndexException e1) {
                getLogger().log(Level.SEVERE, "Error on IndexWriter.commit", e);
            } catch (IOException e1) {
                getLogger().log(Level.SEVERE, "Error on IndexWriter.commit", e);
            } finally {
                SINGLE_WRITER = null;
            }
        }
        return;
    }

    try {
        if (writer != null) {
            getLogger().finer("Closing Lucene IndexWriter...");
            writer.close();
        }
    } catch (Throwable t) {
        getLogger().log(Level.WARNING, "IndexWriter failed to close.", t);

        // There are times when closing the IndexWriter fails (typically FileNotFound while flushing).
        // This is a bit of a disaster, if it happens we're unsure if the index is corrupted, it
        // also leaves the write lock unreleased, which basically is terminal when a 
        // NativeFSLockFactory is active (you need to stop/start the web server)
        // This is an attempt to forcibly release the lock.
        if ((writer != null) && this.luceneConfig.getUseNativeFSLockFactory()) {
            java.lang.reflect.Field wlFld = null;
            try {
                wlFld = writer.getClass().getDeclaredField("writeLock");
            } catch (Throwable t2) {
            }
            if (wlFld != null) {
                boolean wasReleased = false;
                try {
                    wlFld.setAccessible(true);
                    Object wlObj = wlFld.get(writer);
                    if ((wlObj != null) && (wlObj instanceof Lock)) {
                        Lock wlLock = (Lock) wlObj;
                        wasReleased = !wlLock.isLocked();
                        if (!wasReleased) {
                            wlLock.release();
                            wasReleased = !wlLock.isLocked();
                        }
                    }
                } catch (Throwable t2) {
                    getLogger().log(Level.WARNING, "Unable to forcibly release an abandoned write lock.", t2);
                } finally {
                    String sMsg = "The IndexWriter failed to close, write-lock released: " + wasReleased;
                    getLogger().warning(sMsg);
                }
            }
        }

    }
}

From source file:com.fuerve.villageelder.actions.results.SearchResultItemTest.java

License:Apache License

private void buildDummyIndex(final Directory indexDirectory, final Directory taxonomyDirectory)
        throws IOException {
    IndexWriterConfig iwc = new IndexWriterConfig(Lucene.LUCENE_VERSION, Lucene.getPerFieldAnalyzer());
    iwc.setOpenMode(OpenMode.CREATE);//from  w w w  . j a  v a  2s.c  o m
    IndexWriter iw = new IndexWriter(indexDirectory, iwc);
    TaxonomyWriter tw = new DirectoryTaxonomyWriter(taxonomyDirectory, OpenMode.CREATE);
    List<CategoryPath> categories = new ArrayList<CategoryPath>();
    FacetFields facetFields = new FacetFields(tw);

    Document doc = new Document();
    categories.clear();
    doc.add(new StringField("Author", "foo", Store.YES));
    categories.add(new CategoryPath("Author", "foo"));
    doc.add(new LongField("RevisionNumber", 50L, Store.YES));
    doc.add(new StringField("Revision", "50", Store.YES));
    doc.add(new TextField("Message", "stuff", Store.YES));
    iw.addDocument(doc);
    facetFields.addFields(doc, categories);

    doc = new Document();
    facetFields = new FacetFields(tw);
    categories.clear();
    doc.add(new StringField("Author", "bar", Store.YES));
    categories.add(new CategoryPath("Author", "bar"));
    doc.add(new LongField("RevisionNumber", 5000L, Store.YES));
    doc.add(new StringField("Revision", "5000", Store.YES));
    doc.add(new TextField("Message", "stuff", Store.YES));
    iw.addDocument(doc);
    facetFields.addFields(doc, categories);

    tw.commit();
    tw.close();
    iw.commit();
    iw.close();
}