Example usage for org.apache.lucene.search IndexSearcher getIndexReader

List of usage examples for org.apache.lucene.search IndexSearcher getIndexReader

Introduction

In this page you can find the example usage for org.apache.lucene.search IndexSearcher getIndexReader.

Prototype

public IndexReader getIndexReader() 

Source Link

Document

Return the IndexReader this searches.

Usage

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);
        }
    }

}