ReadOnlyIndexPartition( File partitionFolder, Directory directory ) throws IOException { super( partitionFolder, directory ); this.searcherManager = new SearcherManager( directory, new SearcherFactory() ); }
/** Expert: creates a searcher from the provided {@link * IndexReader} using the provided {@link * SearcherFactory}. NOTE: this decRefs incoming reader * on throwing an exception. */ public static IndexSearcher getSearcher(SearcherFactory searcherFactory, IndexReader reader, IndexReader previousReader) throws IOException { boolean success = false; final IndexSearcher searcher; try { searcher = searcherFactory.newSearcher(reader, previousReader); if (searcher.getIndexReader() != reader) { throw new IllegalStateException("SearcherFactory must wrap exactly the provided reader (got " + searcher.getIndexReader() + " but expected " + reader + ")"); } success = true; } finally { if (!success) { reader.decRef(); } } return searcher; } }
@Override public IndexSearcher nrtSearcher() { try { return new SearcherFactory().newSearcher( nrtReader() ); } catch ( IOException e ) { throw new RuntimeException( e ); } }
@Override public IndexSearcher nrtSearcher() { try { return new SearcherFactory().newSearcher(nrtReader(), null); } catch (IOException e) { throw new RuntimeException(e); } }
private static SearcherManager instantiateSearcherManager( IndexWriter writer ) { try { return new SearcherManager( writer, true, new SearcherFactory() ); } catch ( IOException e ) { throw new RuntimeException( e ); } }
public IndexSearcher getIndexSearcher( final ClusterSegment... clusterSegments ) { final Set<KCluster> clusters; if ( clusterSegments == null || clusterSegments.length == 0 ) { clusters = new HashSet<KCluster>( indexes.keySet() ); } else { clusters = new HashSet<KCluster>( clusterSegments.length ); for ( final ClusterSegment clusterSegment : clusterSegments ) { clusters.add( new KClusterImpl( clusterSegment.getClusterId() ) ); } } final Collection<IndexReader> readers = new ArrayList<IndexReader>( clusters.size() ); for ( final KCluster cluster : clusters ) { final LuceneIndex index = indexes.get( cluster ); readers.add( index.nrtReader() ); } try { return new SearcherFactory().newSearcher( new MultiReader( readers.toArray( new IndexReader[ readers.size() ] ) ) ); } catch ( IOException e ) { throw new RuntimeException( e ); } }
@Override public IndexSearcher newSearcher(IndexReader reader, IndexReader previousReader) throws IOException { processReaders(reader, previousReader); return super.newSearcher(reader, previousReader); }
public WritableIndexPartition( File partitionFolder, Directory directory, IndexWriterConfig writerConfig ) throws IOException { super( partitionFolder, directory ); this.indexWriter = new IndexWriter( directory, writerConfig ); this.searcherManager = new SearcherManager( indexWriter, new SearcherFactory() ); }
public IndexSearcher getIndexSearcher(final ClusterSegment... clusterSegments) { final Set<KCluster> clusters; if (clusterSegments == null || clusterSegments.length == 0) { clusters = new HashSet<KCluster>(indexes.keySet()); } else { clusters = new HashSet<KCluster>(clusterSegments.length); for (final ClusterSegment clusterSegment : clusterSegments) { clusters.add(new KClusterImpl(clusterSegment.getClusterId())); } } final Collection<IndexReader> readers = new ArrayList<IndexReader>(clusters.size()); for (final KCluster cluster : clusters) { final LuceneIndex index = indexes.get(cluster); readers.add(index.nrtReader()); } try { return new SearcherFactory().newSearcher(new MultiReader(readers.toArray(new IndexReader[readers.size()])), null); } catch (IOException e) { throw new RuntimeException(e); } }
@Override public IndexSearcher newSearcher(IndexReader reader, IndexReader previousReader) throws IOException { IndexSearcher searcher = super.newSearcher(reader, previousReader); searcher.setQueryCache(engineConfig.getQueryCache()); searcher.setQueryCachingPolicy(engineConfig.getQueryCachingPolicy()); searcher.setSimilarity(engineConfig.getSimilarity()); return searcher; } }
/** * Creates and returns a new SearcherManager from the given {@link Directory}. * @param dir the directory to open the DirectoryReader on. * @param searcherFactory An optional {@link SearcherFactory}. Pass * <code>null</code> if you don't require the searcher to be warmed * before going live or other custom behavior. * * @throws IOException if there is a low-level I/O error */ public SearcherManager(Directory dir, SearcherFactory searcherFactory) throws IOException { if (searcherFactory == null) { searcherFactory = new SearcherFactory(); } this.searcherFactory = searcherFactory; current = getSearcher(searcherFactory, DirectoryReader.open(dir), null); }
@Override public IndexSearcher newSearcher(IndexReader reader, IndexReader previousReader) throws IOException { IndexSearcher searcher = super.newSearcher(reader, previousReader); searcher.setQueryCache(null); termFilters.put(reader, new QueryTermFilter(reader)); reader.addReaderClosedListener(termFilters::remove); return searcher; } }
/** * Creates and returns a new SearcherManager from an existing {@link DirectoryReader}. Note that * this steals the incoming reference. * * @param reader the DirectoryReader. * @param searcherFactory An optional {@link SearcherFactory}. Pass * <code>null</code> if you don't require the searcher to be warmed * before going live or other custom behavior. * * @throws IOException if there is a low-level I/O error */ public SearcherManager(DirectoryReader reader, SearcherFactory searcherFactory) throws IOException { if (searcherFactory == null) { searcherFactory = new SearcherFactory(); } this.searcherFactory = searcherFactory; this.current = getSearcher(searcherFactory, reader, null); }
/** Expert: creates a searcher from the provided {@link * IndexReader} using the provided {@link * SearcherFactory}. NOTE: this decRefs incoming reader * on throwing an exception. */ public static IndexSearcher getSearcher(SearcherFactory searcherFactory, IndexReader reader, IndexReader previousReader) throws IOException { boolean success = false; final IndexSearcher searcher; try { searcher = searcherFactory.newSearcher(reader, previousReader); if (searcher.getIndexReader() != reader) { throw new IllegalStateException("SearcherFactory must wrap exactly the provided reader (got " + searcher.getIndexReader() + " but expected " + reader + ")"); } success = true; } finally { if (!success) { reader.decRef(); } } return searcher; } }
searcherFactory = new SearcherFactory();
/** Expert: creates a searcher from the provided {@link * IndexReader} using the provided {@link * SearcherFactory}. NOTE: this decRefs incoming reader * on throwing an exception. */ public static IndexSearcher getSearcher(SearcherFactory searcherFactory, IndexReader reader, IndexReader previousReader) throws IOException { boolean success = false; final IndexSearcher searcher; try { searcher = searcherFactory.newSearcher(reader, previousReader); if (searcher.getIndexReader() != reader) { throw new IllegalStateException("SearcherFactory must wrap exactly the provided reader (got " + searcher.getIndexReader() + " but expected " + reader + ")"); } success = true; } finally { if (!success) { reader.decRef(); } } return searcher; } }
public static List<Long> getAllNodes( Directory directory, Value propertyValue ) throws IOException { try ( SearcherManager manager = new SearcherManager( directory, new SearcherFactory() ) ) { IndexSearcher searcher = manager.acquire(); Query query = LuceneDocumentStructure.newSeekQuery( propertyValue ); AllNodesCollector collector = new AllNodesCollector(); searcher.search( query, collector ); return collector.nodeIds; } }
/** Expert: creates a searcher from the provided {@link * IndexReader} using the provided {@link * SearcherFactory}. NOTE: this decRefs incoming reader * on throwing an exception. */ public static IndexSearcher getSearcher(SearcherFactory searcherFactory, IndexReader reader, IndexReader previousReader) throws IOException { boolean success = false; final IndexSearcher searcher; try { searcher = searcherFactory.newSearcher(reader, previousReader); if (searcher.getIndexReader() != reader) { throw new IllegalStateException("SearcherFactory must wrap exactly the provided reader (got " + searcher.getIndexReader() + " but expected " + reader + ")"); } success = true; } finally { if (!success) { reader.decRef(); } } return searcher; } }
@BeforeEach void initLuceneResources() throws Exception { dirFactory = new DirectoryFactory.InMemoryDirectoryFactory(); Directory dir = dirFactory.open( testDir.directory( "test" ) ); writer = new IndexWriter( dir, IndexWriterConfigs.standard() ); searcherManager = new SearcherManager( writer, true, new SearcherFactory() ); }
@Override public IndexSearcher newSearcher(IndexReader reader, IndexReader previousReader) throws IOException { IndexSearcher searcher = super.newSearcher(reader, previousReader); searcher.setQueryCache(engineConfig.getQueryCache()); searcher.setQueryCachingPolicy(engineConfig.getQueryCachingPolicy()); searcher.setSimilarity(engineConfig.getSimilarity()); return searcher; } }