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

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

Introduction

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

Prototype

public Directory getDirectory() 

Source Link

Document

Returns the Directory used by this index.

Usage

From source file:com.gemstone.gemfire.cache.lucene.internal.directory.DumpDirectoryFilesJUnitTest.java

License:Apache License

@Before
public void createMocks() throws BucketNotFoundException {

    GemFireCacheImpl cache = Fakes.cache();
    context = mock(RegionFunctionContext.class);
    ResultSender sender = mock(ResultSender.class);
    Region region = mock(Region.class);
    InternalLuceneService service = mock(InternalLuceneService.class);
    InternalLuceneIndex index = mock(InternalLuceneIndex.class);
    RepositoryManager repoManager = mock(RepositoryManager.class);
    IndexRepository repo = mock(IndexRepository.class);
    IndexWriter writer = mock(IndexWriter.class);
    RegionDirectory directory = mock(RegionDirectory.class);
    fileSystem = mock(FileSystem.class);
    Region bucket = mock(Region.class);
    when(bucket.getFullPath()).thenReturn(bucketName);

    when(context.getArguments()).thenReturn(new String[] { directoryName, indexName });
    when(context.getResultSender()).thenReturn(sender);
    when(context.getDataSet()).thenReturn(region);
    when(region.getCache()).thenReturn(cache);
    when(cache.getService(any())).thenReturn(service);
    when(repoManager.getRepositories(eq(context))).thenReturn(Collections.singleton(repo));
    when(index.getRepositoryManager()).thenReturn(repoManager);
    when(index.getName()).thenReturn(indexName);
    when(service.getIndex(eq(indexName), any())).thenReturn(index);
    when(directory.getFileSystem()).thenReturn(fileSystem);
    when(writer.getDirectory()).thenReturn(directory);
    when(repo.getWriter()).thenReturn(writer);
    when(repo.getRegion()).thenReturn(bucket);
}

From source file:com.gemstone.gemfire.cache.lucene.internal.PartitionedRepositoryManagerJUnitTest.java

License:Apache License

private void checkRepository(IndexRepositoryImpl repo0, int bucketId) {
    IndexWriter writer0 = repo0.getWriter();
    RegionDirectory dir0 = (RegionDirectory) writer0.getDirectory();
    assertEquals(fileBuckets.get(bucketId), dir0.getFileSystem().getFileRegion());
    assertEquals(chunkBuckets.get(bucketId), dir0.getFileSystem().getChunkRegion());
    assertEquals(serializer, repo0.getSerializer());
}

From source file:com.github.rnewson.couchdb.lucene.DatabaseIndexer.java

License:Apache License

private UpdateSequence getUpdateSequence(final IndexWriter writer) throws IOException {
    return getUpdateSequence(writer.getDirectory());
}

From source file:com.mathworks.xzheng.admin.SearcherManager.java

License:Apache License

public SearcherManager(IndexWriter writer) throws IOException { //2
    this.writer = writer;
    currentSearcher = new IndexSearcher(DirectoryReader.open(writer.getDirectory())); //C
    warm(currentSearcher);//from ww  w .ja va  2 s  .  c o m

    writer.getConfig().setMergedSegmentWarmer( // 3
            new IndexWriter.IndexReaderWarmer() { // 3
                public void warm(AtomicReader reader) throws IOException { // 3
                    SearcherManager.this.warm(new IndexSearcher(reader)); // 3
                } // 3
            }); // 3
}

From source file:com.mathworks.xzheng.searching.NearRealTimeTest.java

License:Apache License

public void testNearRealTime() throws Exception {
    Directory dir = new RAMDirectory();

    IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_46,
            new StandardAnalyzer(Version.LUCENE_46));
    IndexWriter writer = new IndexWriter(dir, config);
    for (int i = 0; i < 10; i++) {
        Document doc = new Document();
        doc.add(new Field("id", "" + i, Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS));
        doc.add(new Field("text", "aaa", Field.Store.NO, Field.Index.ANALYZED));
        writer.addDocument(doc);/*from  w  w w  .j  a  v a  2s  .c o  m*/
    }
    IndexReader reader = DirectoryReader.open(writer.getDirectory()); // #1
    IndexSearcher searcher = new IndexSearcher(reader); // #A

    Query query = new TermQuery(new Term("text", "aaa"));
    TopDocs docs = searcher.search(query, 1);
    assertEquals(10, docs.totalHits); // #B

    writer.deleteDocuments(new Term("id", "7")); // #2

    Document doc = new Document(); // #3
    doc.add(new Field("id", // #3
            "11", // #3
            Field.Store.NO, // #3
            Field.Index.NOT_ANALYZED_NO_NORMS)); // #3
    doc.add(new Field("text", // #3
            "bbb", // #3
            Field.Store.NO, // #3
            Field.Index.ANALYZED)); // #3
    writer.addDocument(doc); // #3

    //IndexReader newReader = reader.reopen();                 // #4
    IndexReader newReader = DirectoryReader.open(writer.getDirectory()); // #4
    assertFalse(reader == newReader); // #5
    reader.close(); // #6
    searcher = new IndexSearcher(newReader);

    TopDocs hits = searcher.search(query, 10); // #7
    assertEquals(9, hits.totalHits); // #7

    query = new TermQuery(new Term("text", "bbb")); // #8
    hits = searcher.search(query, 1); // #8
    assertEquals(1, hits.totalHits); // #8

    newReader.close();
    writer.close();
}

From source file:dk.defxws.fgslucene.IndexWriterCache.java

License:Open Source License

/**
 * get IndexWriter for given indexPath and write it into cache.
 * /*from w w  w . ja v a2 s. c o  m*/
 * @param indexName
 *            name of index to open.
 * @param config
 *            gsearch config-Object.
 * @throws GenericSearchException
 *             e
 */
private IndexWriter getIndexWriter(final String indexName, final boolean create, final Config config)
        throws GenericSearchException {
    if (indexWriters.get(indexName) == null) {
        IndexWriter iw = null;
        try {
            IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Constants.LUCENE_VERSION,
                    getAnalyzer(config.getAnalyzer(indexName)));
            if (create) {
                indexWriterConfig.setOpenMode(OpenMode.CREATE);
            } else {
                indexWriterConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);
            }
            if (config.getMaxBufferedDocs(indexName) > 1) {
                indexWriterConfig.setMaxBufferedDocs(config.getMaxBufferedDocs(indexName));
            }
            if (config.getRamBufferSizeMb(indexName) > 1) {
                indexWriterConfig.setRAMBufferSizeMB(config.getRamBufferSizeMb(indexName));
            }

            if (config.getMergeFactor(indexName) > 1 || config.getMaxMergeDocs(indexName) > 1
                    || config.getMaxMergeMb(indexName) > 1) {
                LogByteSizeMergePolicy logMergePolicy = new LogByteSizeMergePolicy();
                if (config.getMergeFactor(indexName) > 1) {
                    logMergePolicy.setMergeFactor(config.getMergeFactor(indexName));
                }
                if (config.getMaxMergeDocs(indexName) > 1) {
                    logMergePolicy.setMaxMergeDocs(config.getMaxMergeDocs(indexName));
                }
                if (config.getMaxMergeMb(indexName) > 1) {
                    logMergePolicy.setMaxMergeMB(config.getMaxMergeMb(indexName));
                }
                indexWriterConfig.setMergePolicy(logMergePolicy);
            }
            if (config.getDefaultWriteLockTimeout(indexName) > 1) {
                indexWriterConfig.setWriteLockTimeout(config.getDefaultWriteLockTimeout(indexName));
            }
            if (config.getLuceneDirectoryImplementation(indexName) != null) {
                // Initialize IndexWriter with configured FSDirectory
                FSDirectory directory = getDirectoryImplementation(
                        config.getLuceneDirectoryImplementation(indexName),
                        new File(config.getIndexDir(indexName)));
                iw = new IndexWriter(directory, indexWriterConfig);
            } else {
                // Initialize IndexWriter with default FSDirectory
                iw = new IndexWriter(FSDirectory.open(new File(config.getIndexDir(indexName))),
                        indexWriterConfig);
            }
            if (config.getMaxChunkSize(indexName) > 1) {
                if (iw.getDirectory() instanceof MMapDirectory) {
                    ((MMapDirectory) iw.getDirectory()).setMaxChunkSize(config.getMaxChunkSize(indexName));
                }
            }
        } catch (Exception e) {
            iw = null;
            throw new GenericSearchException(
                    "IndexWriter new error, creating index indexName=" + indexName + " :\n", e);
        }
        indexWriters.put(indexName, iw);
        if (logger.isDebugEnabled())
            logger.debug("getIndexWriter put to map " + iw);
        return iw;
    }
    return indexWriters.get(indexName);
}

From source file:es.pode.indexador.negocio.servicios.indexado.SrvIndexadorServiceImpl.java

License:Open Source License

private void cierraIndicesWROptimiza(Hashtable indicesAbiertosWR) throws Exception {
    if (indicesAbiertosWR == null || indicesAbiertosWR.isEmpty())
        //         no hacemos nada
        return;/*from w w w .j av  a2s.c o  m*/

    //      Hacemos efectivos los cambios en los indices
    try {
        for (Enumeration e = indicesAbiertosWR.elements(); e.hasMoreElements();) {
            IndexWriter indiceEscritura = (IndexWriter) e.nextElement();
            indiceEscritura.flush();
            indiceEscritura.optimize();
            indiceEscritura.getDirectory().clearLock(indiceEscritura.getDirectory().getLockID());
            indiceEscritura.getDirectory().close();
            indiceEscritura.close();
        }
    } catch (Exception e1) {
        logger.error("Error realizando flush sobre los indices abiertos[" + e1.getCause() + "]");
        throw new Exception("Error realizando flush sobre los indices abiertos.", e1);
    }
    //      Modificamos los  spell checker por idiomas
    //      - Reseteamos los spell
    //      - Regeneramos su informacion
    try {
        for (Enumeration e = indicesAbiertosWR.keys(); e.hasMoreElements();) {
            String locale = (String) e.nextElement();
            Directory directorioIndiceSpell = this.indiceSpell(locale);
            //            Eliminamos la informacion del spell checker para regenerarla de nuevo
            spellCheckerReset(directorioIndiceSpell);
            if (directorioIndiceSpell != null) {
                this.spellCheckerAdd(this.getDirectorioPorLocale(locale), directorioIndiceSpell);
            }
        }
    } catch (Exception e) {
        logger.error("Error actualizando Spell Checkers de los indices[" + e.getCause() + "]");
        throw new Exception("Error actualizando Spell Checkers de los indices.", e);
    }
}

From source file:es.pode.indexador.negocio.servicios.indexado.SrvIndexadorServiceImpl.java

License:Open Source License

/**
 * Indexa un array de Objetos Digitales Educativos
 * @param localizador Objeto donde le indicamos la localizacin fsica del fichero immsmanifiestxml 
 * y el identificador del ODE a indexar//from ww  w.  jav  a 2 s. co m
 * @throws java.lang.Exception
 * @see es.pode.indexador.negocio.servicios.SrvIndexadorService#IndexarODE(java.lang.String)
 */
protected IndexadorVO[] handleIndexarODE(es.pode.indexador.negocio.servicios.indexado.IdODEVO[] localizador)
        throws java.lang.Exception {
    //      A partir del objeto de descripcion del ODE que nos pasan generamos el Documento de lucene para la indexacion.
    ArrayList respuestas = new ArrayList();
    int cont = localizador.length;
    String locale = null;
    IndexWriter writer = null;
    Directory directorioIndiceSpell = null;
    Set localeSet = new HashSet();

    for (int x = 0; x < cont; x++) {
        if (logger.isDebugEnabled())
            logger.debug("Iniciamos la indexacin del objeto con localizador = "
                    + localizador[x].getLocalizadorODE());
        if (logger.isDebugEnabled())
            logger.debug("Iniciamos la indexacin del objeto con localizador = "
                    + localizador[x].getCatalogacionPrimaria().getArbolCurricular());

        try {

            locale = localizador[x].getCatalogacionPrimaria().getIdioma();
            localeSet.add(locale);
            if (logger.isDebugEnabled())
                logger.debug("Indexamos el ODE con id[" + localizador[x].getIdODE() + "] en el idioma[" + locale
                        + "]");

            Document doc = new Document();

            if (logger.isDebugEnabled())
                logger.debug("Vamos a generar el Document de Lucene para id[" + localizador[x].getIdODE()
                        + "] e idioma [" + locale + "]");
            doc = this.generarDoc(localizador[x]);

            if (doc != null) {
                if (logger.isDebugEnabled())
                    logger.debug("Aadimos el doc creado al ndice");
                // if (writer.getDirectory().clearLock(arg0))
                writer = this.indiceEscritura(locale);
                writer.addDocument(doc);
                //                it is not needed to flush because close do it: close() Flushes all changes to an index and closes all associated files.
                // writer.flush();
            }

        } catch (Exception e) {
            logger.error(e);
            logger.error(
                    "La indexacin Ha fallado con id ODE[" + localizador[x].getIdODE() + "] localizado en ["
                            + localizador[x].getLocalizadorODE() + "] para idioma[" + locale + "]");
            writer.getDirectory().clearLock(writer.getDirectory().getLockID());
            writer.getDirectory().close();
            writer.close();
            respuestas.add(rellenarVO(localizador[x].getLocalizadorODE(), 1, "Indexacin incorrecta"));
        } finally {
            if (writer != null) {
                // vamos a realizar el optimize al final del bucle for
                //writer.optimize(); 
                writer.close();
                //                actualizamos el indice de las sugerencias.
                directorioIndiceSpell = this.indiceSpell(locale);
                if (directorioIndiceSpell != null) {
                    this.spellCheckerAdd(writer.getDirectory(), directorioIndiceSpell);
                }
            }
        }

        if (logger.isDebugEnabled())
            logger.debug("La indexacin se ha hecho correctamente con localizador[" + localizador[x].getIdODE()
                    + "]");
        respuestas.add(rellenarVO(localizador[x].getLocalizadorODE(), 0, "Indexacin correcta"));
    }

    Iterator setIterator = localeSet.iterator();
    IndexWriter localeWriter = null;
    while (setIterator.hasNext()) {
        String nextLocale = (String) setIterator.next();
        try {
            if (logger.isDebugEnabled())
                logger.debug("Vamos a optimizar el ndice '" + nextLocale + "'");
            localeWriter = this.indiceEscritura(locale);
            if (logger.isDebugEnabled())
                logger.debug("ndice '" + nextLocale + "' abierto. Llamando a writer.optimize()...");
            localeWriter.optimize();
            if (logger.isDebugEnabled())
                logger.debug("ndice '" + nextLocale + "' optimizado");
        } catch (Exception e) {
            logger.error("Ocurri una excepcin mientras se intentaban optimizar los ndices usados", e);
            // no podemos relanzar la excepcin
        } finally {
            if (logger.isDebugEnabled())
                logger.debug("ndice '" + nextLocale + "' optimizado");
            try {
                if (localeWriter != null) {
                    localeWriter.close();
                }
            } catch (Exception e) {
                logger.fatal("Ha sido imposible cerrar el writer.", e);
            }
        }
    }

    return (IndexadorVO[]) respuestas.toArray(new IndexadorVO[respuestas.size()]);
}

From source file:io.yucca.lucene.FieldRemover.java

License:Apache License

/**
 * Remove fields from an index. All readers and writer are closed on
 * completion or on an exception.//ww w .  j  av a  2 s.com
 * 
 * @param reader
 *            IndexReader
 * @param writer
 *            IndexWriter
 *            File destination index directory
 * @param fields
 *            String[] fields to remove
 */
public void removeFields(IndexReader reader, IndexWriter writer, String[] fields) {
    Set<String> removals = toTrimmedSet(fields);
    List<AtomicReaderContext> leaves = reader.leaves();
    AtomicReader wrappedLeaves[] = new AtomicReader[leaves.size()];
    for (int i = 0; i < leaves.size(); i++) {
        wrappedLeaves[i] = new FieldFilterAtomicReader(leaves.get(i).reader(), removals, true);
    }
    try {
        MultiReader mr = new MultiReader(wrappedLeaves, true);
        writer.addIndexes(mr);
        writer.commit();
        writer.close();
        mr.close();
    } catch (IOException e) {
        log.error("Writing new index failed.", e);
    } finally {
        IOUtils.closeWhileHandlingException(reader);
        IOUtils.closeWhileHandlingException(writer);
        IOUtils.closeWhileHandlingException(writer.getDirectory());
    }
}

From source file:it.doqui.index.ecmengine.business.personalization.multirepository.index.lucene.IndexInfoProxyService.java

License:Open Source License

/**
 * Metodo di utilit privato che inserisce un singolo documento lucene nell'indice su cui  aperto il writer
 *
 * @param doc documento lucene da inserire
 * @param writer da utilizzare per inserire il documento
 * @throws LuceneIndexException/*from  ww  w.  ja  v a  2 s  .c o  m*/
 * @throws IOException
 */
private synchronized void insert(Document doc, IndexWriter writer) throws LuceneIndexException, IOException {
    if (s_logger.isDebugEnabled()) {
        s_logger.debug("[IndexInfoProxyService::insert] (" + this + ") Writing doc: " + doc.getField("ID")
                + " [To directory: " + writer.getDirectory() + "]");
        //s_logger.debug("[IndexInfoProxyService::insert] Document: ["+doc.toString().replaceAll(" ", "\r\n")+"]");
    }
    writer.addDocument(doc);
}