List of usage examples for org.apache.lucene.search IndexSearcher search
public <C extends Collector, T> T search(Query query, CollectorManager<C, T> collectorManager) throws IOException
From source file:com.czw.search.lucene.example.facet.SimpleFacetsExample.java
License:Apache License
/** * User runs a query and counts facets only without collecting the matching documents. *//*from w ww .ja v a 2 s . c o m*/ private List<FacetResult> facetsOnly() throws IOException { DirectoryReader indexReader = DirectoryReader.open(indexDir); IndexSearcher searcher = new IndexSearcher(indexReader); TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoDir); FacetsCollector fc = new FacetsCollector(); // MatchAllDocsQuery is for "browsing" (counts facets // for all non-deleted docs in the index); normally // you'd use a "normal" query: searcher.search(new MatchAllDocsQuery(), fc); // Retrieve results List<FacetResult> results = new ArrayList<>(); // Count both "Publish Date" and "Author" dimensions Facets facets = new FastTaxonomyFacetCounts(taxoReader, config, fc); results.add(facets.getTopChildren(10, "Author")); results.add(facets.getTopChildren(10, "Publish Date")); results.add(facets.getTopChildren(10, "Category")); indexReader.close(); taxoReader.close(); return results; }
From source file:com.dasasian.chok.lucene.integration.LuceneComplianceTest.java
License:Apache License
@SuppressWarnings("unchecked") private void checkQueryResults(IndexSearcher indexSearcher, String chokIndexName, String fieldName, String queryTerm, int resultCount, Sort sort) throws Exception { // final Query query = new QueryParser("", new // KeywordAnalyzer()).parse(fieldName + ": " + queryTerm); final Query query = new QueryParser(Version.LUCENE_30, "", new KeywordAnalyzer()) .parse(fieldName + ": " + queryTerm); final TopDocs searchResultsLucene; final Hits searchResultsChok; if (sort == null) { searchResultsLucene = indexSearcher.search(query, resultCount); searchResultsChok = luceneClient.search(query, new String[] { chokIndexName }, resultCount); } else {// www . ja v a 2 s.co m searchResultsLucene = indexSearcher.search(query, null, resultCount, sort); searchResultsChok = luceneClient.search(query, new String[] { chokIndexName }, resultCount, sort); } assertEquals(searchResultsLucene.totalHits, searchResultsChok.size()); ScoreDoc[] scoreDocs = searchResultsLucene.scoreDocs; List<Hit> hits = searchResultsChok.getHits(); if (sort == null) { for (int i = 0; i < scoreDocs.length; i++) { assertEquals(scoreDocs[i].score, hits.get(i).getScore(), 0.0); } } else { for (int i = 0; i < scoreDocs.length; i++) { Object[] luceneFields = ((FieldDoc) scoreDocs[i]).fields; WritableComparable[] chokFields = hits.get(i).getSortFields(); assertEquals(luceneFields.length, chokFields.length); for (int j = 0; j < luceneFields.length; j++) { assertEquals(luceneFields[j].toString(), chokFields[j].toString()); } // Arrays.equals(scoreDocs, chokFields); } } }
From source file:com.docdoku.server.IndexSearcherBean.java
License:Open Source License
public Set<DocumentMasterKey> searchInIndex(String pWorkspaceId, String pContent) { try {// w ww . j a v a2 s. com Set<DocumentMasterKey> indexedKeys = new HashSet<DocumentMasterKey>(); Query fullNameQuery = new WildcardQuery(new Term("fullName", pWorkspaceId + "/*")); Query contentQuery = new TermQuery(new Term("content", pContent)); BooleanQuery mainQuery = new BooleanQuery(); mainQuery.add(fullNameQuery, BooleanClause.Occur.MUST); mainQuery.add(contentQuery, BooleanClause.Occur.MUST); if (!indexReader.isCurrent()) { //TODO use IndexReader.reopen(); when available indexReader.close(); indexReader = IndexReader.open(FSDirectory.open(new File(indexPath))); } IndexSearcher indexSearcher = new IndexSearcher(indexReader); ScoreDoc[] hits = indexSearcher.search(mainQuery, 500).scoreDocs; for (int i = 0; i < hits.length; i++) { org.apache.lucene.document.Document doc = indexReader.document(hits[i].doc); String fullName = doc.get("fullName"); String[] partRefs = BinaryResource.parseOwnerRef(fullName).split("/"); DocumentMasterKey key = new DocumentMasterKey(pWorkspaceId, partRefs[0], partRefs[1]); indexedKeys.add(key); } return indexedKeys; } catch (CorruptIndexException ex) { throw new EJBException(ex); } catch (IOException ex) { throw new EJBException(ex); } }
From source file:com.doculibre.constellio.lucene.BaseLuceneIndexHelper.java
License:Open Source License
protected synchronized int getDocNum(T object) { int docNum;// w w w.j a va 2s . c o m String uniqueIndexFieldName = getUniqueIndexFieldName(); String uniqueIndexFieldValue = getUniqueIndexFieldValue(object); if (uniqueIndexFieldValue != null) { String query = uniqueIndexFieldName + ":" + uniqueIndexFieldValue; try { Analyzer analyzer = analyzerProvider.getAnalyzer(Locale.FRENCH); QueryParser multiFielsQP = new QueryParser(Version.LUCENE_44, uniqueIndexFieldName, analyzer); Query luceneQuery = multiFielsQP.parse(query); Directory directory = FSDirectory.open(indexDir); IndexReader reader = DirectoryReader.open(directory); IndexSearcher indexSearcher = new IndexSearcher(reader); TopDocs topDocs = indexSearcher.search(luceneQuery, reader.maxDoc()); if (topDocs.totalHits > 0) { docNum = topDocs.scoreDocs[0].doc; } else { docNum = -1; } // indexSearcher.close(); // TODO add finally reader.close(); directory.close(); } catch (ParseException e) { throw new RuntimeException(e); } catch (CorruptIndexException e) { throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } } else { docNum = -1; } return docNum; }
From source file:com.dreamerpartner.codereview.lucene.SearchHelper.java
License:Apache License
/** * ??// w w w. j a va 2s . co m * @param in * @param searcher * @param query * @return * @throws IOException */ public static Document searchOne(BufferedReader in, IndexSearcher searcher, Query query) throws IOException { TopDocs results = searcher.search(query, 1); ScoreDoc[] hits = results.scoreDocs; int numTotal = results.totalHits; if (numTotal > 0) { return searcher.doc(hits[0].doc); } return null; }
From source file:com.dreamerpartner.codereview.lucene.SearchHelper.java
License:Apache License
/** * /*w ww. j a v a 2 s . c o m*/ * @param searcher * @param query * @param sort * @param pageNo * @param pageSize * @return * @throws IOException */ public static PageBean<Document> doPagingSearch(IndexSearcher searcher, Query query, Sort sort, int pageNo, int pageSize) throws IOException { if (sort == null) sort = new Sort(new SortField("id", Type.STRING)); int start = (pageNo - 1) * pageSize; int numHits = pageNo * pageSize; TopFieldCollector collector = TopFieldCollector.create(sort, numHits, false, false, false, false); searcher.search(query, collector); ScoreDoc[] hits = collector.topDocs(start, pageSize).scoreDocs; if (hits == null || hits.length < 1) return null; List<Document> docs = new ArrayList<Document>(pageSize); for (int i = 0; i < hits.length; i++) { Document doc = searcher.doc(hits[i].doc); docs.add(doc); } return new PageBean<Document>(pageSize, pageNo, collector.getTotalHits(), docs); }
From source file:com.eclipsesource.connect.search.Searcher.java
License:Open Source License
private void performSearch(LuceneSearchResult searchResult, String query) { try (DirectoryReader reader = DirectoryReader.open(directory)) { IndexSearcher searcher = new IndexSearcher(reader); FuzzyQuery luceneQuery = new FuzzyQuery(new Term(Indexer.CONTENT_KEY, query)); TopDocs topDocs = searcher.search(luceneQuery, Integer.MAX_VALUE); populateSearchResult(searchResult, reader, topDocs); } catch (IOException shouldNotHappen) { throw new IllegalStateException(shouldNotHappen); }//from w ww.jav a 2 s. co m }
From source file:com.edgenius.wiki.search.service.AbstractSearchService.java
License:Open Source License
protected SearchResult commonSearch(final String keyword, final int currPageNumber, final int returnCount, final User user, final String... advance) throws SearchException { try {//from w w w. j a va 2 s. com return (SearchResult) this.search(new SearcherCallback() { public Object doWithSearcher(IndexSearcher searcher) throws SearchException { try { if (StringUtils.trimToEmpty(keyword).length() > 0) { Query[] queries = createQuery(keyword, advance); Sort sort = createSort(advance); // Don't use Lucene default filter function to filter out no reading permission results // it is too slow - it will retrieve all documents in index - whatever it is matched or not //Filter filter = new SecurityFilter(user); TopDocs hits; if (sort == null) { hits = searcher.search(queries[0], LuceneConfig.MAX_RETURN); } else { hits = searcher.search(queries[0], LuceneConfig.MAX_RETURN, sort); } SearchResult rs = getResult(searcher, hits, keyword, currPageNumber, returnCount, user, queries[1]); return rs; } else { return emptyResult(keyword, currPageNumber); } } catch (Exception e) { throw new SearchException(e); } } }); } catch (Exception e) { log.error("Search failed ", e); throw new SearchException(e); } }
From source file:com.edgenius.wiki.search.service.AttachmentSearchServiceImpl.java
License:Open Source License
public Document searchByNodeUuid(final String nodeUuid) throws SearchException { return (Document) this.search(new SearcherCallback() { public Object doWithSearcher(IndexSearcher searcher) throws SearchException { try { Term identifierTerm = new Term(FieldName.KEY, nodeUuid.toLowerCase()); TermQuery query = new TermQuery(identifierTerm); TopDocs hits = searcher.search(query, LuceneConfig.MAX_RETURN); Document doc = null; if (hits.totalHits > 0) { //assume only one doc = searcher.doc(hits.scoreDocs[0].doc); }//from w ww . java 2 s. co m return doc; } catch (Exception e) { throw new SearchException(e); } } }); }
From source file:com.epam.catgenome.dao.index.FeatureIndexDao.java
License:Open Source License
/** * Queries a feature index of a project, specified by ID * * @param projectId ID of a project, which index to work with * @param query a query to search in index * @return a {List} of {@code FeatureIndexEntry} objects that satisfy index query * @deprecated// w w w . ja v a 2 s . c o m * @throws IOException */ @Deprecated private IndexSearchResult searchLuceneIndexForProject(final long projectId, Query query, List<String> vcfInfoFields, Integer maxResultsCount, Sort sort) throws IOException { Map<Integer, FeatureIndexEntry> entryMap = new LinkedHashMap<>(); int totalHits = 0; try (Directory index = fileManager.getIndexForProject(projectId); IndexReader reader = DirectoryReader.open(index)) { if (reader.numDocs() == 0) { return new IndexSearchResult(Collections.emptyList(), false, 0); } IndexSearcher searcher = new IndexSearcher(reader); final TopDocs docs; int resultsCount = maxResultsCount == null ? reader.numDocs() : maxResultsCount; if (sort == null) { docs = searcher.search(query, resultsCount); } else { docs = searcher.search(query, resultsCount, sort); } totalHits = docs.totalHits; final ScoreDoc[] hits = docs.scoreDocs; Map<Long, BookmarkIndexEntry> foundBookmarkEntries = new HashMap<>(); // for batch bookmarks loading createIndexEntries(hits, entryMap, foundBookmarkEntries, searcher, vcfInfoFields); setBookmarks(foundBookmarkEntries); } catch (IOException e) { LOGGER.error(MessageHelper.getMessage(MessagesConstants.ERROR_FEATURE_INDEX_SEARCH_FAILED), e); return new IndexSearchResult(Collections.emptyList(), false, 0); } return new IndexSearchResult(new ArrayList<>(entryMap.values()), maxResultsCount != null && totalHits > maxResultsCount, totalHits); }