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

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

Introduction

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

Prototype

@Override
public void close() throws IOException 

Source Link

Document

Closes all open resources and releases the write lock.

Usage

From source file:de.ingrid.upgrader.service.ManifestIndexer.java

License:EUPL

private void index(final List<File> files) throws Exception {
    // create tmp index folder
    LOG.debug("  create tmp index folder");
    final File tmp = new File(_targetFolder, IKeys.TEMP_FOLDER);
    if (!tmp.exists()) {
        tmp.mkdirs();//w  w w.ja v a2 s.c om
    }

    // indexer
    LOG.debug("  initialize index writer");
    final StandardAnalyzer analyzer = new StandardAnalyzer();
    final IndexWriter writer = new IndexWriter(tmp, analyzer, true);

    // add files to index
    LOG.debug("  adding documents");
    for (final File file : files) {
        final Document doc = fileToDocument(file);
        if (doc != null) {
            writer.addDocument(doc);
        }
    }

    // optimize
    LOG.debug("  optimizing and closing writer");
    writer.optimize();
    writer.close();

    // close searcher
    final LuceneSearcher searcher = LuceneSearcher.getInstance();
    if (searcher != null) {
        searcher.closeReader();
    }

    // rename index
    LOG.debug("  renaming tmp index folder");
    final File folder = new File(_targetFolder, IKeys.INDEX_FOLDER);
    delete(folder);
    tmp.renameTo(folder);

    // open new searcher
    if (searcher == null) {
        LuceneSearcher.createInstance(folder);
    } else {
        searcher.openReader(folder);
    }
}

From source file:de.innovationgate.wgpublisher.lucene.LuceneManager.java

License:Open Source License

private void init() throws IOException, DocumentException {
    _indexer = new Indexer();
    _timer = new Timer();
    _timer.schedule(_indexer, 1000 * 60, _indexInterval);

    _indexConfig = new LuceneIndexConfiguration(_core, _dir);
    _indexDirectory = FSDirectory.open(_dir);

    if (_indexConfig.isNewConfiguration()) {
        IndexWriter writer = new IndexWriter(_indexDirectory, null, true, MaxFieldLength.LIMITED);
        writer.close();
    }//from w w  w. ja  v a2  s .  c om

    // Try to remove an existing lock
    if (IndexWriter.isLocked(_indexDirectory)) {
        LOG.warn("Lucene index directory was locked. Removing lock now");
        IndexWriter.unlock(_indexDirectory);
    }
}

From source file:de.innovationgate.wgpublisher.lucene.LuceneManager.java

License:Open Source License

public void optimizeIndex(Logger log) {
    synchronized (_indexWriteLock) {
        IndexWriter writer = null;
        try {/*  w  w  w.  ja va 2s .c o m*/
            writer = new IndexWriter(_indexDirectory, null, MaxFieldLength.UNLIMITED);
            log.info("Optimizing lucene index ...");
            long start = System.currentTimeMillis();
            writer.optimize();
            long end = System.currentTimeMillis();
            log.info("Optimized lucene index in " + (end - start) + " ms.");
        } catch (Throwable e) {
            log.error("Exception performing index optimization.", e);
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                    writer = null;
                } catch (IOException e1) {
                    log.error("Unable to close lucene index writer because of I/O exception", e1);
                }
            }
        }
    }
}

From source file:de.jetsli.lumeo.util.LuceneHelperTest.java

License:Apache License

@Test
public void testTermMatching() throws Exception {
    RAMDirectory dir = new RAMDirectory();
    IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(RawLucene.VERSION, new KeywordAnalyzer()));
    Document d = new Document();

    FieldType ft = Mapping.getLongFieldType(true, true);
    d.add(new LongField("id", 1234, ft));
    d.add(new LongField("tmp", 1111, ft));
    w.addDocument(d);/*  w w w  . jav  a  2  s. c  o  m*/

    d = new Document();
    d.add(new LongField("id", 1234, ft));
    d.add(new LongField("tmp", 2222, ft));
    w.updateDocument(getTerm("id", 1234), d);

    d = new Document();
    d.add(new LongField("id", 0, ft));
    w.addDocument(d);
    w.commit();

    IndexReader reader = DirectoryReader.open(w, true);
    IndexSearcher searcher = new IndexSearcher(reader);

    BytesRef bytes = new BytesRef();
    NumericUtils.longToPrefixCoded(1234, 0, bytes);
    TopDocs td = searcher.search(new TermQuery(new Term("id", bytes)), 10);
    assertEquals(1, td.totalHits);
    assertEquals(1234L, searcher.doc(td.scoreDocs[0].doc).getField("id").numericValue());
    assertEquals(2222L, searcher.doc(td.scoreDocs[0].doc).getField("tmp").numericValue());
    w.close();
}

From source file:de.ks.lucene.LuceneTaggingTest.java

License:Apache License

@Test
public void testTags() throws Exception {
    IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(analyzer));

    List<String> allTags = Arrays.asList("Bla Blubb", "Blubb", "Blubber Huhu", "Bla Huhu", "Haha");
    for (String tag : allTags) {
        Document doc = new Document();
        doc.add(new TextField("tags", tag, Field.Store.YES));
        writer.addDocument(doc);//from ww  w . j a va2  s  . com
    }
    writer.close();

    DirectoryReader directoryReader = DirectoryReader.open(directory);
    IndexSearcher searcher = new IndexSearcher(directoryReader);
    String term = "blubb";
    TermQuery termQuery = new TermQuery(new Term("tags", term));
    TopDocs search = searcher.search(termQuery, 50);
    log("TermQuery", searcher, search);

    FuzzyQuery fuzzyQuery = new FuzzyQuery(new Term("tags", term));
    search = searcher.search(fuzzyQuery, 50);
    log("FuzzyQuery", searcher, search);

    BooleanQuery.Builder builder = new BooleanQuery.Builder();
    builder.add(new TermQuery(new Term("tags", "blubb")), BooleanClause.Occur.SHOULD);
    builder.add(new TermQuery(new Term("tags", "bla")), BooleanClause.Occur.SHOULD);
    BooleanQuery query = builder.build();
    search = searcher.search(query, 50);
    log("BooleanQuery", searcher, search);
}

From source file:de.lmu.ifi.dbs.elki.application.lucene.SimpleTextLoader.java

License:Open Source License

@Override
public void run() {
    try {//  w  ww  . ja  v  a2s.c  o  m
        final Directory dir = FSDirectory.open(index);
        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36,
                new StandardAnalyzer(Version.LUCENE_36));
        IndexWriter writer = new IndexWriter(dir, config);

        final URI suri = source.toURI();
        for (File inf : source.listFiles()) {
            Document doc = new Document();
            String id = suri.relativize(inf.toURI()).getPath();
            String text = FileUtil.slurp(new FileInputStream(inf));
            doc.add(new Field("id", id, Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.add(new Field("contents", text, Field.Store.YES, Field.Index.ANALYZED));
            writer.addDocument(doc);
        }
        writer.close();
    } catch (IOException e) {
        throw new AbortException("I/O error in lucene.", e);
    }
}