List of usage examples for org.apache.lucene.index IndexWriter getDirectory
public Directory getDirectory()
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); }