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

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

Introduction

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

Prototype

public IndexSearcher(IndexReaderContext context) 

Source Link

Document

Creates a searcher searching the provided top-level IndexReaderContext .

Usage

From source file:com.fuerve.villageelder.search.SearchQueryParserTest.java

License:Apache License

/**
 * Test method for {@link com.fuerve.villageelder.search.SearchQueryParser#getRangeQuery(java.lang.String, java.lang.String, java.lang.String, boolean, boolean)}.
 * @throws Exception /*from  ww w .  ja  v a 2s .co  m*/
 */
@Test
public final void testGetRangeQueryRevisionSingleton() throws Exception {
    QueryParser target = new SearchQueryParser(Lucene.LUCENE_VERSION, "Message", Lucene.getPerFieldAnalyzer());
    Query testQuery = target.parse("Revision:50");

    assertEquals(TermQuery.class, testQuery.getClass());

    IndexSearcher searcher = new IndexSearcher(buildDummyIndex());
    ScoreDoc[] docs = searcher.search(testQuery, 10).scoreDocs;
    assertEquals(1, docs.length);
}

From source file:com.gauronit.tagmata.core.Indexer.java

License:Open Source License

public ArrayList getIndexNames() {
    IndexSearcher mainIndexSearcher = null;
    IndexReader ir = null;//  ww w .  j  av  a 2 s.c om
    try {
        ir = IndexReader.open(FSDirectory.open(new File(indexDir + File.separator + MAIN_INDEX),
                new SimpleFSLockFactory(indexDir + File.separator + MAIN_INDEX)));
        mainIndexSearcher = new IndexSearcher(ir);

        ArrayList<String[]> indexNames = new ArrayList<String[]>();

        mainIndexSearcher = new IndexSearcher(ir);
        Query q = new WildcardQuery(new Term("indexName", "*"));
        TopScoreDocCollector collector = TopScoreDocCollector.create(10000, false);
        mainIndexSearcher.search(q, collector);
        ScoreDoc[] hits = collector.topDocs().scoreDocs;
        for (ScoreDoc hit : hits) {
            Document doc = mainIndexSearcher.doc(hit.doc);
            String indexName = doc.get("indexName");
            String indexDisplayName = doc.get("displayName");
            indexNames.add(new String[] { indexName, indexDisplayName });
        }

        return indexNames;
    } catch (Exception ex) {
        ex.printStackTrace();
        return null;
    } finally {
        try {
            ir.close();
            mainIndexSearcher.close();
            ir = null;
            mainIndexSearcher = null;
        } catch (IOException e) {
            logger.info("Error: Unable to close index.");
            System.exit(0);
            e.printStackTrace();
        }

    }
}

From source file:com.gauronit.tagmata.core.Indexer.java

License:Open Source License

public ArrayList<CardSnapshot> getBookmarks() {
    ArrayList<CardSnapshot> cardSnaps = new ArrayList();
    try {/*from  w w w.j  a v a 2s. c o m*/
        IndexReader ir = IndexReader.open(FSDirectory.open(new File(indexDir + File.separator + MAIN_INDEX),
                new SimpleFSLockFactory(indexDir + File.separator + MAIN_INDEX)));
        IndexSearcher mainIndexSearcher = new IndexSearcher(ir);

        Query q = new WildcardQuery(new Term("qcId", "*"));
        TopScoreDocCollector collector = TopScoreDocCollector.create(10000, false);
        mainIndexSearcher.search(q, collector);
        ScoreDoc[] hits = collector.topDocs().scoreDocs;
        for (ScoreDoc hit : hits) {
            Document doc = mainIndexSearcher.doc(hit.doc);
            IndexReader reader = IndexReader
                    .open(FSDirectory.open(new File(indexDir + File.separator + doc.get("qcIndexName")),
                            new SimpleFSLockFactory(indexDir + File.separator + doc.get("qcIndexName"))));
            IndexSearcher searcher = new IndexSearcher(reader);

            q = new TermQuery(new Term("id", doc.get("qcId")));
            collector = TopScoreDocCollector.create(10000, false);
            searcher.search(q, collector);
            ScoreDoc[] hits2 = collector.topDocs().scoreDocs;

            doc = searcher.doc(hits2[0].doc);

            cardSnaps.add(new CardSnapshot("", doc));
            reader.close();
            searcher.close();
            reader = null;
            searcher = null;
        }
        ir.close();
        mainIndexSearcher.close();
        ir = null;
        mainIndexSearcher = null;
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return cardSnaps;
}

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 a v  a  2s .co  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.gemstone.gemfire.cache.lucene.internal.directory.DumpDirectoryFilesIntegrationTest.java

License:Apache License

@Test
public void shouldDumpReadableLuceneIndexFile() throws Exception {
    luceneService.createIndex(INDEX_NAME, REGION_NAME, "title", "description");

    Region region = createRegion(REGION_NAME, RegionShortcut.PARTITION);
    region.put(0, new TestObject("title 1", "hello world"));
    region.put(1 * 113, new TestObject("title 2", "this will not match"));
    region.put(2 * 113, new TestObject("title 3", "hello world"));
    region.put(3 * 113, new TestObject("hello world", "hello world"));

    InternalLuceneIndex index = (InternalLuceneIndex) luceneService.getIndex(INDEX_NAME, REGION_NAME);

    index.waitUntilFlushed(60000);/*  w  ww  .  j a  v  a  2s. com*/

    index.dumpFiles(diskDirRule.get().getAbsolutePath());

    //Find the directory for the first bucket
    File bucket0 = diskDirRule.get().listFiles(file -> file.getName().endsWith("_0"))[0];

    //Test that we can read the lucene index from the dump
    final FSDirectory directory = FSDirectory.open(bucket0.toPath());
    IndexReader reader = DirectoryReader.open(directory);
    IndexSearcher searcher = new IndexSearcher(reader);
    final TopDocs results = searcher.search(new MatchAllDocsQuery(), 1000);
    assertEquals(4, results.totalHits);
}

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 //from   ww  w  .  j  av a2  s .  c  o m
 * @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

public synchronized IndexSearcher getSearcher(Similarity similarity, IndexReader indexReader)
        throws IOException {

    checkClosed();/*from   w  ww .  j  a v a2 s  .co  m*/

    IndexSearcher searcher = cachedSearchers.get(similarity);
    if (searcher != null) {
        LOGGER.debug("returning cached searcher");
    } else {
        LOGGER.debug("opening new searcher and caching it");
        searcher = indexReader != null ? new IndexSearcher(indexReader) : new IndexSearcher(directory);
        searcher.setSimilarity(similarity);
        cachedSearchers.put(similarity, searcher);
    }
    searcherUseCount++;
    notifyAll();
    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./*from w ww . ja  v  a2s. 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);
        }
    }

}

From source file:com.gentics.cr.lucene.indexaccessor.DefaultMultiIndexAccessor.java

License:Apache License

public IndexSearcher getSearcher(final Similarity similarity, final IndexReader indexReader)
        throws IOException {
    IndexReader ir = indexReader;/* w  w w.j a v  a  2 s . c  o  m*/
    if (ir == null) {
        IndexReader[] readers = new IndexReader[this.dirs.length];

        IndexAccessorFactory factory = IndexAccessorFactory.getInstance();
        int i = 0;
        for (Directory index : this.dirs) {
            IndexAccessor indexAccessor = factory.getAccessor(index);
            readers[i] = indexAccessor.getReader(false);
            multiReaderAccessors.put(readers[i], indexAccessor);
            i++;
        }
        ir = new MultiReader(readers, false);
    }
    IndexSearcher multiSearcher = new IndexSearcher(ir);
    multiSearcher.setSimilarity(similarity);

    return multiSearcher;
}

From source file:com.gitblit.LuceneExecutor.java

License:Apache License

/**
 * Gets an index searcher for the repository.
 * //  w  w w. ja v a 2 s . com
 * @param repository
 * @return
 * @throws IOException
 */
private IndexSearcher getIndexSearcher(String repository) throws IOException {
    IndexSearcher searcher = searchers.get(repository);
    if (searcher == null) {
        IndexWriter writer = getIndexWriter(repository);
        searcher = new IndexSearcher(IndexReader.open(writer, true));
        searchers.put(repository, searcher);
    }
    return searcher;
}