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

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

Introduction

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

Prototype

public IndexWriter(Directory d, IndexWriterConfig conf) throws IOException 

Source Link

Document

Constructs a new IndexWriter per the settings given in conf.

Usage

From source file:com.andreig.jetty.Search.java

License:GNU General Public License

private void create_writer() throws IOException, CorruptIndexException, LockObtainFailedException {

    if (writer != null)
        return;//from   ww w  . jav  a2 s.  c o m

    IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer);

    writer = new IndexWriter(index, config);

}

From source file:com.aperigeek.dropvault.web.service.IndexService.java

License:Open Source License

private IndexWriter getIndexWriter(String username, String password) throws IOException {
    Analyzer analyser = new StandardAnalyzer(Version.LUCENE_33);
    IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_33, analyser);
    IndexWriter writer = new IndexWriter(getDirectory(username, password), config);
    return writer;
}

From source file:com.appeligo.amazon.ProgramIndexer.java

License:Apache License

public void run() {
    if (!indexLocation.exists()) {
        //create the index directory
        indexLocation.mkdirs();// ww  w .  j  av a  2 s.c om
    }

    try {
        savedSearches.clear();
        writer = new IndexWriter(indexLocation, analyzer);
        searcher = new IndexSearcher(indexLocation.getPath());

        deleteExpiredPrograms();
        writer.flush();

        //reopen searcher so the deleted documents are not present
        close(searcher);
        searcher = new IndexSearcher(indexLocation.getPath());

        addNewPrograms();

    } catch (Exception e) {
        log.error("Error occurred during indexing.", e);

    } finally {
        savedSearches.clear();
        close(searcher);
        searcher = null;

        close(writer);
        writer = null;

        close(conn);
        conn = null;
    }
}

From source file:com.appeligo.ccdataindexer.Indexer.java

License:Apache License

private IndexWriter createIndexWriter() throws IOException {
    if (indexLocation == null) {
        return null;
    }/* ww w  .j  a  v  a  2 s . co  m*/
    File indexDir = new File(indexLocation);
    if (!indexDir.isDirectory()) {
        log.info("Creating Lucene index directory " + indexDir);
        indexDir.mkdirs();
    }
    IndexWriter indexWriter = null;
    Configuration config = ConfigurationService.getConfiguration("system");

    String[] stopWords = PorterStemAnalyzer.ENGLISH_STOP_WORDS;
    if (config != null) {
        stopWords = config.getStringArray("stopWords.word");
    }
    log.info("Using stop words:" + Arrays.asList(stopWords));
    while (indexWriter == null) {
        try {
            indexWriter = new IndexWriter(indexDir, new PorterStemAnalyzer(stopWords));
            indexWriter.setMaxBufferedDocs(1000);
            indexWriter.setMaxMergeDocs(100);
        } catch (IOException e) {
            log.error("Failed to obtain lock for " + indexLocation + ".  Trying again.", e);
        }
    }
    return indexWriter;
}

From source file:com.appeligo.ccdataindexer.Indexer.java

License:Apache License

private IndexWriter createCompositeIndexWriter() throws IOException {
    if (compositeIndexLocation == null) {
        return null;
    }//from   w  ww. java2s.co  m
    File indexDir = new File(compositeIndexLocation);
    if (!indexDir.isDirectory()) {
        log.info("Creating Lucene composite index directory " + indexDir);
        indexDir.mkdirs();
    }
    IndexWriter indexWriter = null;

    /* NO STEMMING IN COMPOSITE INDEX... THROWS OFF SPELL CHECKER
    Configuration config = ConfigurationService.getConfiguration("system");
    String[] stopWords = PorterStemAnalyzer.ENGLISH_STOP_WORDS;
    if (config != null) {   
       stopWords = config.getStringArray("stopWords.word");
    }
    log.info("Using stop words:" + Arrays.asList(stopWords));
    */
    while (indexWriter == null) {
        try {
            indexWriter = new IndexWriter(indexDir, new StandardAnalyzer());
            indexWriter.setMaxBufferedDocs(1000);
            indexWriter.setMaxMergeDocs(100);
        } catch (IOException e) {
            log.error("Failed to obtain lock for " + compositeIndexLocation + ".  Trying again.", e);
        }
    }
    return indexWriter;
}

From source file:com.appeligo.lucene.IndexerQueue.java

License:Apache License

private IndexWriter createIndexWriter() throws IOException {
    File indexDir = new File(indexLocation);
    if (!indexDir.isDirectory()) {
        log.info("Creating Lucene index directory " + indexDir);
        indexDir.mkdirs();/*from   w  w w .  jav a2s. c  o  m*/
    }
    IndexWriter indexWriter = null;
    while (indexWriter == null) {
        try {
            indexWriter = new IndexWriter(indexDir, analyzer);
        } catch (IOException e) {
            log.error("Failed to obtain lock for " + indexLocation + ".  Trying again.", e);
        }
    }
    return indexWriter;
}

From source file:com.aurel.track.lucene.index.LuceneIndexer.java

License:Open Source License

/**
 * Initializes an IndexWriter.//www.j av a2 s  .co  m
 * It will be called from the following places:
 *    -   on system startup workItemWriter should be initialized!
 *                   created = false if no reindex at startup
 *                   created = true if reindex at startup
 *    -   before explicit reIndexing: created = true
 *    -   after reindexing: create = false;
 *    During the adding/editing/deleting of index data the IndexWriter should be initialized with created = false!
 * @param created
 * @param index
 */
public static IndexWriter initWriter(boolean created, int index) {
    Directory indexDirectory = LuceneUtil.getIndexDirectory(index);
    if (indexDirectory == null) {
        LOGGER.error("Can not find or create the index directory for workitems");
        return null;
    }
    Analyzer analyzer = LuceneUtil.getAnalyzer();
    if (analyzer == null) {
        LOGGER.error("Analyzer is null");
        return null;
    }
    IndexWriter indexWriter = getIndexWriter(index);
    if (indexWriter != null) {
        try {
            //release the lock
            indexWriter.close();
        } catch (IOException e) {
            LOGGER.error("Closing the IndexWriter for index " + index + " failed with " + e.getMessage());
            LOGGER.debug(ExceptionUtils.getStackTrace(e));
        }
    }
    try {
        IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
        OpenMode openMode = null;
        if (created) {
            openMode = OpenMode.CREATE;
        } else {
            openMode = OpenMode.APPEND;
        }
        indexWriterConfig.setOpenMode(openMode);
        indexWriter = new IndexWriter(indexDirectory, indexWriterConfig);
    } catch (OverlappingFileLockException e) {
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("OverlappingFileLockException " + e.getMessage());
            LOGGER.debug(ExceptionUtils.getStackTrace(e));
        }
        if (!created) {
            //try again this time with created = true
            try {
                //open for create
                IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
                indexWriterConfig.setOpenMode(OpenMode.CREATE);
                //indexWriter = new IndexWriter(indexDirectory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
                indexWriter = new IndexWriter(indexDirectory, indexWriterConfig);
                //close it in order to reopen it for modifications
                indexWriter.close();
            } catch (IOException e1) {
                LOGGER.error("Creating the IndexWriter for index " + index + " failed with " + e.getMessage());
                LOGGER.debug(ExceptionUtils.getStackTrace(e));
            }
            //try again this time with created = false
            try {
                IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
                indexWriterConfig.setOpenMode(OpenMode.APPEND);
                //indexWriter = new IndexWriter(indexDirectory, analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED);
                indexWriter = new IndexWriter(indexDirectory, indexWriterConfig);
            } catch (IOException e1) {
                LOGGER.error("Creating the IndexWriter for index " + index + " failed with " + e.getMessage());
                LOGGER.debug(ExceptionUtils.getStackTrace(e));
            }
        } else {
            LOGGER.error("Creating the IndexWriter for index " + index + " failed with " + e.getMessage());
            LOGGER.debug(ExceptionUtils.getStackTrace(e));
        }
    } catch (IOException e) {
        //tried probably with created = false, when the index structure doesn't exist yet
        //it is the case when by startup the useLucene is active but reindexOnStartup not
        //we should try to open the writers with false (for modifications) in order to not to destroy the possible existing index
        //but when the index doesn't exists yet the opening of the writer with false fails. And this is the case now.
        if (!created) {
            //try again this time with created = true
            try {
                //open for create
                IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
                indexWriterConfig.setOpenMode(OpenMode.CREATE);
                //indexWriter = new IndexWriter(indexDirectory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
                indexWriter = new IndexWriter(indexDirectory, indexWriterConfig);
                //close it in order to reopen it for modifications
                indexWriter.close();
            } catch (IOException e1) {
                LOGGER.error("Creating the IndexWriter for index " + index + " failed with " + e.getMessage());
                LOGGER.debug(ExceptionUtils.getStackTrace(e));
            }
            //try again this time with created = false
            try {
                IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
                indexWriterConfig.setOpenMode(OpenMode.APPEND);
                //indexWriter = new IndexWriter(indexDirectory, analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED);
                indexWriter = new IndexWriter(indexDirectory, indexWriterConfig);
            } catch (IOException e1) {
                LOGGER.error("Creating the IndexWriter for index " + index + " failed with " + e.getMessage());
                LOGGER.debug(ExceptionUtils.getStackTrace(e));
            }
        } else {
            LOGGER.error("Creating the IndexWriter for index " + index + " failed with " + e.getMessage());
            LOGGER.debug(ExceptionUtils.getStackTrace(e));
        }
    }
    switch (index) {
    case LuceneUtil.INDEXES.WORKITEM_INDEX:
        workItemWriter = indexWriter;
        break;
    case LuceneUtil.INDEXES.NOT_LOCALIZED_LIST_INDEX:
        notLocalizedLookupWriter = indexWriter;
        break;
    case LuceneUtil.INDEXES.LOCALIZED_LIST_INDEX:
        localizedLookupWriter = indexWriter;
        break;
    case LuceneUtil.INDEXES.EXTERNAL_LOOKUP_WRITER:
        externalLookupWriter = indexWriter;
        break;
    case LuceneUtil.INDEXES.ATTACHMENT_INDEX:
        attachmentWriter = indexWriter;
        break;
    case LuceneUtil.INDEXES.EXPENSE_INDEX:
        expenseWriter = indexWriter;
        break;
    case LuceneUtil.INDEXES.BUDGET_PLAN_INDEX:
        budgetPlanWriter = indexWriter;
        break;
    case LuceneUtil.INDEXES.LINK_INDEX:
        linkWriter = indexWriter;
        break;
    default:
        return null;
    }
    return indexWriter;
}

From source file:com.b2international.index.compat.SingleDirectoryIndexImpl.java

License:Apache License

protected void initLucene(final File indexDirectory, final boolean clean) {
    try {/* w w w. j a  v a  2s.c om*/
        this.directory = Directories.openFile(indexDirectory.toPath());
        final Analyzer analyzer = new ComponentTermAnalyzer();
        final IndexWriterConfig config = new IndexWriterConfig(analyzer);
        config.setOpenMode(clean ? OpenMode.CREATE : OpenMode.CREATE_OR_APPEND);
        config.setIndexDeletionPolicy(new SnapshotDeletionPolicy(config.getIndexDeletionPolicy()));
        this.writer = new IndexWriter(directory, config);
        this.writer.commit(); // Create index if it didn't exist
        this.manager = new SearcherManager(directory, new SearchWarmerFactory());
    } catch (final IOException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
}

From source file:com.b2international.index.lucene.NullIndexSearcher.java

License:Apache License

private static DirectoryReader createRamReader() throws IOException {

    final RAMDirectory directory = new RAMDirectory();
    if (!DirectoryReader.indexExists(directory)) {

        final IndexWriterConfig conf = new IndexWriterConfig(new WhitespaceAnalyzer());
        final IndexWriter writer = new IndexWriter(directory, conf);
        writer.commit();//from   www  .j av  a2  s.co m
        writer.close();
    }

    return DirectoryReader.open(directory);

}

From source file:com.bah.lucene.BaseDirectoryTestSuite.java

License:Apache License

@Test
public void testCreateIndex() throws IOException {
    long s = System.nanoTime();
    IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_43, new KeywordAnalyzer());
    FSDirectory control = FSDirectory.open(fileControl);
    Directory dir = getControlDir(control, directory);
    // The serial merge scheduler can be useful for debugging.
    // conf.setMergeScheduler(new SerialMergeScheduler());
    IndexWriter writer = new IndexWriter(dir, conf);
    int numDocs = 10000;
    DirectoryReader reader = null;//from   ww w  .j  ava  2  s  .co m
    for (int i = 0; i < 100; i++) {
        if (reader == null) {
            reader = DirectoryReader.open(writer, true);
        } else {
            DirectoryReader old = reader;
            reader = DirectoryReader.openIfChanged(old, writer, true);
            if (reader == null) {
                reader = old;
            } else {
                old.close();
            }
        }
        assertEquals(i * numDocs, reader.numDocs());
        IndexSearcher searcher = new IndexSearcher(reader);
        NumericRangeQuery<Integer> query = NumericRangeQuery.newIntRange("id", 42, 42, true, true);
        TopDocs topDocs = searcher.search(query, 10);
        assertEquals(i, topDocs.totalHits);
        addDocuments(writer, numDocs);
    }
    writer.close(false);
    reader.close();
    long e = System.nanoTime();
    System.out.println("Total time [" + (e - s) / 1000000.0 + " ms]");
}