List of usage examples for org.apache.lucene.search IndexSearcher IndexSearcher
public IndexSearcher(IndexReaderContext context)
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; }