List of usage examples for org.apache.lucene.search IndexSearcher getIndexReader
public IndexReader getIndexReader()
From source file:com.facebook.presto.operator.HashAggregationOperator.java
License:Apache License
private Map<String, Long> GetGroupByResult() throws IOException { IndexReader reader = null;// w w w .j av a 2 s . c om Map<String, Long> returnMap = new HashMap<String, Long>(); try { reader = DirectoryReader .open(FSDirectory.open(Paths.get("/home/liyong/workspace-neno/lucenetest/index"))); } catch (IOException e) { e.printStackTrace(); } IndexSearcher searcher = new IndexSearcher(reader); Terms terms = MultiFields.getTerms(searcher.getIndexReader(), "orderpriority"); TermsEnum te = terms.iterator(); while (te.next() != null) { String name = te.term().utf8ToString(); int count = te.docFreq(); returnMap.put(name, Long.valueOf(count)); } return returnMap; }
From source file:com.facebook.presto.operator.ScanFilterAndProjectOperator.java
License:Apache License
private Map<String, Long> getCountResult() throws IOException { IndexReader reader = null;/*from ww w . j av a 2 s. c o m*/ Map<String, Long> returnMap = new HashMap<String, Long>(); try { reader = DirectoryReader .open(FSDirectory.open(Paths.get("/home/liyong/workspace-neno/lucenetest/index"))); } catch (IOException e) { e.printStackTrace(); } IndexSearcher searcher = new IndexSearcher(reader); Terms terms = MultiFields.getTerms(searcher.getIndexReader(), "orderpriority"); TermsEnum te = terms.iterator(); while (te.next() != null) { String name = te.term().utf8ToString(); int count = te.docFreq(); returnMap.put(name, Long.valueOf(count)); } return returnMap; }
From source file:com.flaptor.hounder.searcher.ReloadableIndexHandler.java
License:Apache License
/** * Returns the number of documents in the current index. Note that the index may change at any * time, so the returned value should be taken as a hint on the actual size of the index. * * @return The number of (undeleted) documents in the active index. * @throws NoIndexActiveException if there is no index active. *///from www. j a v a2s. c o m public int getNumDocs() throws NoIndexActiveException, SearchTimeoutException, SearcherException { IndexRepository ir = currentIndexRepository.get(); if (null == ir) { throw new NoIndexActiveException(); } IndexSearcher searcher = ir.getIndexSearcher(); try { return searcher.getIndexReader().numDocs(); } finally { ir.releaseIndexSearcher(searcher); } }
From source file:com.flaptor.indextank.index.lsi.LsiIndex.java
License:Apache License
private void reopenSearcher() { BlockingDeque<IndexSearcher> searcherPool = new LinkedBlockingDeque<IndexSearcher>(); BlockingDeque<QueryMatcher> matcherPool = new LinkedBlockingDeque<QueryMatcher>(); for (int i = 0; i < SEARCHER_POOL_SIZE; i++) { try {// w ww.j a va 2 s. co m IndexSearcher searcher = new IndexSearcher(directory, true); //read-only for better concurrent performance. TermMatcher termMatcher = new IndexReaderTermMatcher(searcher.getIndexReader(), PAYLOAD_TERM); QueryMatcher matcher = new TermBasedQueryMatcher(scorer, termMatcher, this.facetingManager); searcherPool.addFirst(searcher); //no blocking, throws exception. matcherPool.addFirst(matcher); } catch (CorruptIndexException cie) { logger.fatal("HORROR!!! corrupted index. unable to reopen", cie); } catch (IOException ioe) { logger.fatal("HORROR!!! IO exception. unable to reopen", ioe); } } searchObjects.set( new Pair<BlockingDeque<IndexSearcher>, BlockingDeque<QueryMatcher>>(searcherPool, matcherPool)); }
From source file:com.floragunn.searchguard.configuration.SearchGuardFlsDlsIndexSearcherWrapper.java
License:Open Source License
@Override protected IndexSearcher dlsFlsWrap(final EngineConfig engineConfig, final IndexSearcher searcher) throws EngineException { if (searcher.getIndexReader().getClass() != DlsFlsFilterLeafReader.DlsFlsDirectoryReader.class) { throw new RuntimeException("Unexpected searcher class: " + searcher.getIndexReader().getClass()); }// w w w.j a v a 2 s. com return searcher; }
From source file:com.floragunn.searchguard.configuration.SearchGuardIndexSearcherWrapper.java
License:Apache License
@Override public final IndexSearcher wrap(final EngineConfig engineConfig, final IndexSearcher searcher) throws EngineException { if (log.isTraceEnabled()) { log.trace("IndexSearcher {} should be wrapped (reader is {})", searcher.getClass(), searcher.getIndexReader().getClass()); }//from ww w. j av a 2 s. c o m if (!shardReady) { return searcher; } if (isSearchGuardIndexRequest() && !isAdminAuhtenticatedOrInternalRequest()) { return new IndexSearcher(new EmptyReader()); } if (!isAdminAuhtenticatedOrInternalRequest()) { //if (settings == null || settings.getAsBoolean("searchguard.dynamic.dlsfls_enabled", true)) { return dlsFlsWrap(engineConfig, searcher); //} } return searcher; }
From source file:com.gauronit.tagmata.core.Indexer.java
License:Open Source License
public ArrayList<CardSnapshot> search(String searchText, ArrayList<String> indexNames, boolean searchInTitle, boolean searchInTags, boolean searchInText, boolean superFuzzy) { ArrayList<CardSnapshot> cardSnaps = new ArrayList(); try {//from w w w . j ava2 s .c o m ArrayList<IndexSearcher> searchers = new ArrayList<IndexSearcher>(); for (String indexName : indexNames) { IndexReader reader = IndexReader .open(FSDirectory.open(new File(indexDir + File.separator + indexName), new SimpleFSLockFactory(indexDir + File.separator + indexName))); IndexSearcher searcher = new IndexSearcher(reader); searchers.add(searcher); } BooleanQuery query = new BooleanQuery(); if (searchInTitle) { IndexerUtil.getTokenizedQuery(query, "title", searchText, superFuzzy); } if (searchInTags) { IndexerUtil.getTokenizedQuery(query, "tags", searchText, superFuzzy); } if (searchInText) { IndexerUtil.getTokenizedQuery(query, "text", searchText, superFuzzy); IndexerUtil.getTokenizedQuery(query, "analyzedText", searchText, superFuzzy); } for (IndexSearcher searcher : searchers) { TopScoreDocCollector collector = TopScoreDocCollector.create(10000, false); searcher.search(query, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; for (ScoreDoc hit : hits) { Document doc = searcher.doc(hit.doc); TokenStream stream = TokenSources.getTokenStream("text", doc.get("analyzedText"), new StandardAnalyzer(Version.LUCENE_20.LUCENE_35)); QueryScorer scorer = new QueryScorer(query, "analyzedText"); Fragmenter fragmenter = new SimpleSpanFragmenter(scorer, 20); Highlighter highlighter = new Highlighter(scorer); highlighter.setTextFragmenter(fragmenter); String[] fragments = highlighter.getBestFragments(stream, doc.get("text"), 5); String highlights = ""; for (String fragment : fragments) { highlights += fragment + "..."; } if (highlights.equals("")) { String text = doc.get("text"); if (text.length() > 100) { highlights += doc.get("text").substring(0, 100); } else { highlights += doc.get("text"); } } cardSnaps.add(new CardSnapshot(highlights, doc)); } searcher.getIndexReader().close(); searcher.close(); searcher = null; } } catch (Exception ex) { ex.printStackTrace(); } return cardSnaps; }
From source file:com.gentics.cr.lucene.indexaccessor.DefaultIndexAccessor.java
License:Apache License
/** * Closes all of the Searchers in the Searcher cache. This method is invoked * in a synchronized context.//from ww w.j a v a2 s . c om */ protected void closeCachedSearchers() { LOGGER.debug("closing cached searchers (" + cachedSearchers.size() + ")"); for (IndexSearcher searcher : cachedSearchers.values()) { try { searcher.getIndexReader().close(); } catch (IOException e) { LOGGER.error("error closing cached Searcher", e); } } cachedSearchers.clear(); }
From source file:com.gentics.cr.lucene.indexaccessor.DefaultIndexAccessor.java
License:Apache License
/** * Fetches a double checked Searcher that has been checked for the presence of a reopen file * Note that it may occure that a prioritized Searcher may be reopened twice. * @param indexLocation /*w ww .ja va 2 s . com*/ * @return * @throws IOException */ public IndexSearcher getPrioritizedSearcher() throws IOException { boolean reopened = this.numReopening > 0; IndexSearcher searcher = (IndexSearcher) getSearcher(); if (reopened) { //REOPEN SEARCHER AS IT WAS PRIORITIZED synchronized (DefaultIndexAccessor.this) { IndexReader reader = searcher.getIndexReader(); IndexSearcher oldSearcher = searcher; IndexReader newReader = reader.reopen(); if (newReader != reader) { searcher = new IndexSearcher(newReader); searcher.setSimilarity(oldSearcher.getSimilarity()); oldSearcher.getIndexReader().close(); for (Map.Entry<Similarity, IndexSearcher> e : cachedSearchers.entrySet()) { if (e.getValue() == oldSearcher) { cachedSearchers.put(e.getKey(), searcher); } } } } } return searcher; }
From source file:com.gentics.cr.lucene.indexaccessor.DefaultIndexAccessor.java
License:Apache License
/** * Reopens all of the Searchers in the Searcher cache. This method is invoked * in a synchronized context./* ww w . j a v a2 s . com*/ */ private void reopenCachedSearchers() { LOGGER.debug( "reopening cached searchers (" + cachedSearchers.size() + "):" + Thread.currentThread().getId()); Set<Similarity> keys = cachedSearchers.keySet(); for (Similarity key : keys) { IndexSearcher searcher = cachedSearchers.get(key); try { IndexReader oldReader = searcher.getIndexReader(); IndexSearcher oldSearcher = searcher; IndexReader newReader = oldReader.reopen(); if (newReader != oldReader) { cachedSearchers.remove(key); searcher = new IndexSearcher(newReader); searcher.setSimilarity(oldSearcher.getSimilarity()); oldSearcher.getIndexReader().close(); cachedSearchers.put(key, searcher); } } catch (IOException e) { LOGGER.error("error reopening cached Searcher", e); } } }