List of usage examples for org.apache.lucene.search TopScoreDocCollector create
public static TopScoreDocCollector create(int numHits, int totalHitsThreshold)
From source file:org.index.TermScore.java
public void retrieveAll() throws Exception { ScoreDoc[] hits;// ww w . ja v a 2s. co m TopDocs topDocs; String runName = prop.getProperty("retrieve.runname", "baseline"); String resultsFile = prop.getProperty("retrieve.results_file"); FileWriter fw = new FileWriter(resultsFile); List<SOQuery> queries = qc.constructQueries(); for (SOQuery thisQuery : queries) { //System.out.println(thisQuery); TopScoreDocCollector collector = TopScoreDocCollector.create(numWanted, true); Query query = thisQuery.luceneQueryObj; searcher.search(query, collector); topDocs = collector.topDocs(); hits = topDocs.scoreDocs; if (isSupervised) { float predFactor; int docId; // Rerank the results based on the predicted scores for (int i = 0; i < hits.length; ++i) { Document d = searcher.doc(hits[i].doc); docId = Integer.parseInt(d.get(QuestionIndexer.FIELD_ID)); predFactor = docScorePredictionMap.get(docId); hits[i].score = 0.5f * predFactor + 0.5f * hits[i].score; } Arrays.sort(hits, new ScoreDocComparator()); } StringBuffer buff = new StringBuffer(); for (int i = 0; i < hits.length; ++i) { int docId = hits[i].doc; Document d = searcher.doc(docId); buff.append(thisQuery.qid).append("\tQ0\t").append(d.get(QuestionIndexer.FIELD_ID)).append("\t") .append((i + 1)).append("\t").append(hits[i].score).append("\t").append(runName) .append("\n"); } fw.write(buff.toString()); } fw.close(); reader.close(); }
From source file:org.jamwiki.search.RankingAlgorithmSearchEngine.java
License:LGPL
/** * Find all documents that contain a specific search term, ordered by relevance. * This method supports all Lucene search query syntax. * * @param virtualWiki The virtual wiki for the topic. * @param text The search term being searched for. * @return A list of SearchResultEntry objects for all documents that * contain the search term.//from www . j a va 2 s . c o m */ public List<SearchResultEntry> findResults(String virtualWiki, String text, List<Integer> namespaces) { StandardAnalyzer analyzer = new StandardAnalyzer(USE_LUCENE_VERSION); List<SearchResultEntry> results = new ArrayList<SearchResultEntry>(); logger.trace("search text: " + text); try { IndexSearcher searcher = this.retrieveIndexSearcher(virtualWiki); Query query = this.createSearchQuery(searcher, analyzer, text, namespaces); // actually perform the search TopScoreDocCollector collector = TopScoreDocCollector.create(MAXIMUM_RESULTS_PER_SEARCH, true); Highlighter highlighter = new Highlighter( new SimpleHTMLFormatter("<span class=\"highlight\">", "</span>"), new SimpleHTMLEncoder(), new QueryScorer(query)); try { Class classRQ = Class.forName("com.transaxtions.search.rankingalgorithm.RankingQuery"); Class classQuery = Class.forName("org.apache.lucene.search.Query"); Object rq = classRQ.newInstance(); Class classArray[] = new Class[2]; classArray[0] = classQuery; classArray[1] = searcher.getClass(); Object args[] = new Object[2]; args[0] = query; args[1] = searcher; Method methodRQ_search = classRQ.getMethod("search", classArray); Object hitsobject = methodRQ_search.invoke(rq, args); Class classRH = hitsobject.getClass(); classArray = new Class[1]; classArray[0] = int.class; Method methodRH_length = classRH.getMethod("length", null); Method methodRH_docid = classRH.getMethod("docid", classArray); Method methodRH_score = classRH.getMethod("score", classArray); Object lenobject = methodRH_length.invoke(hitsobject); int length = ((Integer) lenobject).intValue(); for (int i = 0; i < length; i++) { args = new Object[1]; args[0] = new Integer(i); Object docobject = methodRH_docid.invoke(hitsobject, args); int docId = ((Integer) docobject).intValue(); Document doc = searcher.doc(docId); String summary = retrieveResultSummary(doc, highlighter, analyzer); Object scoreobject = methodRH_score.invoke(hitsobject, args); float score = ((Float) scoreobject).floatValue(); SearchResultEntry result = new SearchResultEntry(doc.get(FIELD_TOPIC_NAME), score, summary); results.add(result); } } catch (Throwable t) { logger.error("Failure while executing RankingAlgorithm search", t); } } catch (Exception e) { logger.error("Exception while searching for " + text, e); } return results; }
From source file:org.kie.kieora.backend.lucene.LuceneSearchIndex.java
License:Apache License
private List<KObject> search(final Query query, final int pageSize, final int startIndex) { final TopScoreDocCollector collector = TopScoreDocCollector.create((startIndex + 1) * pageSize, true); final IndexSearcher index = lucene.nrtSearcher(); final List<KObject> result = new ArrayList<KObject>(pageSize); try {// w ww . ja v a2 s . co m index.search(query, collector); final ScoreDoc[] hits = collector.topDocs(startIndex).scoreDocs; int iterations = hits.length > pageSize ? pageSize : hits.length; for (int i = 0; i < iterations; i++) { result.add(toKObject(index.doc(hits[i].doc))); } } catch (final Exception ex) { throw new RuntimeException("Error during Query!", ex); } finally { lucene.nrtRelease(index); } return result; }
From source file:org.kie.kieora.io.BatchIndexTest.java
License:Apache License
@Test public void testIndex() throws IOException, InterruptedException { {// w w w .ja v a 2 s. co m final Path file = ioService().get("git://temp-repo-test/path/to/file.txt"); ioService().write(file, "some content here", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override public String name() { return "dcore.author"; } @Override public Object value() { return "My User Name Here"; } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.lastModification"; } @Override public Object value() { return new Date(); } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.comment"; } @Override public Object value() { return "initial document version, should be revised later."; } }); } { final Path file = ioService().get("git://temp-repo-test/path/to/some/complex/file.txt"); ioService().write(file, "some other content here", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override public String name() { return "dcore.author"; } @Override public Object value() { return "My Second User Name"; } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.lastModification"; } @Override public Object value() { return new Date(); } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.comment"; } @Override public Object value() { return "important document, should be used right now."; } }); } { final Path file = ioService().get("git://temp-repo-test/simple.doc"); ioService().write(file, "some doc content here", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override public String name() { return "dcore.author"; } @Override public Object value() { return "My Original User"; } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.lastModification"; } @Override public Object value() { return new Date(); } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.comment"; } @Override public Object value() { return "unlock document updated, should be checked by boss."; } }); } { final Path file = ioService().get("git://temp-repo-test/xxx/simple.xls"); ioService().write(file, "plans!?"); } new BatchIndex(indexEngine, ioService(), DublinCoreView.class, VersionAttributeView.class) .run(ioService().get("git://temp-repo-test/")); final IndexSearcher searcher = luceneSetup.nrtSearcher(); { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("dcore.author", "name")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("dcore.author", "second")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new MatchAllDocsQuery(), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(4, hits.length); } luceneSetup.nrtRelease(searcher); }
From source file:org.kie.kieora.io.IOServiceIndexedFSImplTest.java
License:Apache License
@Test public void testIndexedFile() throws IOException { final Path dir = ioService().createDirectories(getDirectoryPath().resolveSibling("someNewOtherPath")); final Path path = dir.resolve("myIndexedFile.txt"); ioService().write(path, "ooooo!", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override//from w w w . ja v a 2 s . co m public String name() { return "custom"; } @Override public Object value() { return dateValue; } }, new FileAttribute<String>() { @Override public String name() { return "x_hello"; } @Override public String value() { return "hello some world jhere"; } }, new FileAttribute<Integer>() { @Override public String name() { return "int"; } @Override public Integer value() { return 10; } }); assertNotNull(metaModelStore.getMetaObject(Path.class.getName())); assertEquals(3, metaModelStore.getMetaObject(Path.class.getName()).getProperties().size()); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("int")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("x_hello")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom")); ioService().setAttribute(path, "my_new_key", "some big value here to be able to query for"); assertEquals(4, metaModelStore.getMetaObject(Path.class.getName()).getProperties().size()); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("int")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("x_hello")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("my_new_key")); assertEquals(1, metaModelStore.getMetaObject(Path.class.getName()).getProperty("int").getTypes().size()); assertEquals(1, metaModelStore.getMetaObject(Path.class.getName()).getProperty("x_hello").getTypes().size()); assertEquals(1, metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes().size()); assertEquals(1, metaModelStore.getMetaObject(Path.class.getName()).getProperty("my_new_key").getTypes().size()); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("int").getTypes() .contains(Integer.class)); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("x_hello").getTypes() .contains(String.class)); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes() .contains(Date.class)); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("my_new_key").getTypes() .contains(String.class)); ioService().write(path.resolveSibling("otherIndexedFile.txt"), "ooooo!", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override public String name() { return "custom"; } @Override public Long value() { return 10L; } }, new FileAttribute<Object>() { @Override public String name() { return "my_new_key"; } @Override public String value() { return "some other content here that only this can be found."; } }); assertEquals(2, metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes().size()); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes() .contains(Date.class)); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes() .contains(Long.class)); final IndexSearcher searcher = luceneSetup.nrtSearcher(); { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("my_new_key", "found")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("my_new_key", "query")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("my_new_key", "some")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new MatchAllDocsQuery(), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); } luceneSetup.nrtRelease(searcher); }
From source file:org.kie.kieora.io.IOServiceIndexedGitImplTest.java
License:Apache License
@Test public void testIndexedFile() throws IOException { final Path path = getDirectoryPath().resolveSibling("someNewOtherPath").resolve("myIndexedFile.txt"); ioService().write(path, "ooooo!", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override/*from ww w. j a v a2s .c o m*/ public String name() { return "custom"; } @Override public Object value() { return dateValue; } }, new FileAttribute<String>() { @Override public String name() { return "x_hello"; } @Override public String value() { return "hello some world jhere"; } }, new FileAttribute<Integer>() { @Override public String name() { return "int"; } @Override public Integer value() { return 10; } }); assertNotNull(metaModelStore.getMetaObject(Path.class.getName())); assertEquals(3, metaModelStore.getMetaObject(Path.class.getName()).getProperties().size()); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("int")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("x_hello")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom")); ioService().setAttribute(path, "my_new_key", "some big value here to be able to query for"); assertEquals(4, metaModelStore.getMetaObject(Path.class.getName()).getProperties().size()); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("int")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("x_hello")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom")); assertNotNull(metaModelStore.getMetaObject(Path.class.getName()).getProperty("my_new_key")); assertEquals(1, metaModelStore.getMetaObject(Path.class.getName()).getProperty("int").getTypes().size()); assertEquals(1, metaModelStore.getMetaObject(Path.class.getName()).getProperty("x_hello").getTypes().size()); assertEquals(1, metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes().size()); assertEquals(1, metaModelStore.getMetaObject(Path.class.getName()).getProperty("my_new_key").getTypes().size()); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("int").getTypes() .contains(Integer.class)); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("x_hello").getTypes() .contains(String.class)); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes() .contains(Date.class)); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("my_new_key").getTypes() .contains(String.class)); ioService().write(path.resolveSibling("otherIndexedFile.txt"), "ooooo!", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override public String name() { return "custom"; } @Override public Long value() { return 10L; } }, new FileAttribute<Object>() { @Override public String name() { return "my_new_key"; } @Override public String value() { return "some other content here that only this can be found."; } }); assertEquals(2, metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes().size()); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes() .contains(Date.class)); assertTrue(metaModelStore.getMetaObject(Path.class.getName()).getProperty("custom").getTypes() .contains(Long.class)); final IndexSearcher searcher = luceneSetup.nrtSearcher(); { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("my_new_key", "found")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("my_new_key", "query")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("my_new_key", "some")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new MatchAllDocsQuery(), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); } luceneSetup.nrtRelease(searcher); }
From source file:org.kie.uberfire.metadata.backend.lucene.search.LuceneSearchIndex.java
License:Apache License
private List<KObject> search(final Query query, final int pageSize, final int startIndex, final ClusterSegment... clusterSegments) { final TopScoreDocCollector collector = TopScoreDocCollector.create((startIndex + 1) * pageSize, true); final IndexSearcher index = indexManager.getIndexSearcher(clusterSegments); final List<KObject> result = new ArrayList<KObject>(pageSize); try {/*from w ww.ja v a 2 s .c o m*/ index.search(query, collector); final ScoreDoc[] hits = collector.topDocs(startIndex).scoreDocs; int iterations = hits.length > pageSize ? pageSize : hits.length; for (int i = 0; i < iterations; i++) { result.add(toKObject(index.doc(hits[i].doc))); } } catch (final Exception ex) { throw new RuntimeException("Error during Query!", ex); } finally { indexManager.release(index); } return result; }
From source file:org.kie.uberfire.metadata.io.BatchIndexTest.java
License:Apache License
@Test public void testIndex() throws IOException, InterruptedException { {//from w ww . j av a 2s .c om final Path file = ioService().get("git://temp-repo-test/path/to/file.txt"); ioService().write(file, "some content here", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override public String name() { return "dcore.author"; } @Override public Object value() { return "My User Name Here"; } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.lastModification"; } @Override public Object value() { return new Date(); } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.comment"; } @Override public Object value() { return "initial document version, should be revised later."; } }); } { final Path file = ioService().get("git://temp-repo-test/path/to/some/complex/file.txt"); ioService().write(file, "some other content here", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override public String name() { return "dcore.author"; } @Override public Object value() { return "My Second User Name"; } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.lastModification"; } @Override public Object value() { return new Date(); } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.comment"; } @Override public Object value() { return "important document, should be used right now."; } }); } { final Path file = ioService().get("git://temp-repo-test/simple.doc"); ioService().write(file, "some doc content here", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override public String name() { return "dcore.author"; } @Override public Object value() { return "My Original User"; } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.lastModification"; } @Override public Object value() { return new Date(); } }, new FileAttribute<Object>() { @Override public String name() { return "dcore.comment"; } @Override public Object value() { return "unlock document updated, should be checked by boss."; } }); } { final Path file = ioService().get("git://temp-repo-test/xxx/simple.xls"); ioService().write(file, "plans!?"); } new BatchIndex(config.getIndexEngine(), ioService(), DublinCoreView.class) .run(ioService().get("git://temp-repo-test/"), new Runnable() { @Override public void run() { try { final Index index = config.getIndexManager() .get(toKCluster(ioService().get("git://temp-repo-test/").getFileSystem())); final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new MatchAllDocsQuery(), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(4, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("dcore.author", "name")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("dcore.author", "second")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); } ((LuceneIndex) index).nrtRelease(searcher); } catch (Exception ex) { ex.printStackTrace(); fail(); } } }); }
From source file:org.kie.uberfire.metadata.io.IOServiceIndexedGitImplTest.java
License:Apache License
@Test public void testIndexedFile() throws IOException, InterruptedException { final Path newOtherPath = getDirectoryPath().resolveSibling("someNewOtherPath"); ioService().write(newOtherPath.resolve("dummy"), "<none>"); final Path path = newOtherPath.resolve("myIndexedFile.txt"); ioService().write(path, "ooooo!", Collections.<OpenOption>emptySet(), new FileAttribute<Object>() { @Override/*from ww w. j a v a 2 s .c om*/ public String name() { return "custom"; } @Override public Object value() { return dateValue; } }, new FileAttribute<String>() { @Override public String name() { return "int.hello"; } @Override public String value() { return "hello some world jhere"; } }, new FileAttribute<Integer>() { @Override public String name() { return "int"; } @Override public Integer value() { return 10; } }); ioService().write(newOtherPath.resolve("myOtherIndexedFile.txt"), "ooooo!", Collections.<OpenOption>emptySet(), new FileAttribute<String>() { @Override public String name() { return "int.hello"; } @Override public String value() { return "jhere"; } }); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index assertNotNull(config.getMetaModelStore().getMetaObject(Path.class.getName())); assertNotNull(config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("int")); assertNotNull(config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("int.hello")); assertNotNull(config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("custom")); assertNotNull(config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("int")); assertNotNull(config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("int.hello")); assertNotNull(config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("custom")); assertEquals(1, config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("int").getTypes() .size()); assertEquals(1, config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("int.hello") .getTypes().size()); assertEquals(1, config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("custom") .getTypes().size()); assertTrue(config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("int").getTypes() .contains(Integer.class)); assertTrue(config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("int.hello") .getTypes().contains(String.class)); assertTrue(config.getMetaModelStore().getMetaObject(Path.class.getName()).getProperty("custom").getTypes() .contains(Date.class)); final Index index = config.getIndexManager().get(toKCluster(newOtherPath.getFileSystem())); final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("int.hello", "world")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new TermQuery(new Term("int.hello", "jhere")), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); } { final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(new MatchAllDocsQuery(), collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); } ((LuceneIndex) index).nrtRelease(searcher); }
From source file:org.kimios.kernel.index.SearchQuery.java
License:Open Source License
public Vector<Document> execute(IndexReader reader) throws IndexException { try {//from ww w. j av a 2s .c om if (this.searchRoot != null) { this.clauses.add(new DocumentParentClause(this.searchRoot.getPath())); } Query[] q = new Query[this.clauses.size()]; for (int i = 0; i < this.clauses.size(); i++) { q[i] = this.clauses.get(i).getLuceneQuery(); } Query query = IndexHelper.mergeQueries(IndexHelper.getAnalyzer(), q); IndexSearcher searcher = new IndexSearcher(reader); final Vector<Document> results = new Vector<Document>(); final IndexReader readerCpy = reader; TopScoreDocCollector dcColl = TopScoreDocCollector.create(Integer.MAX_VALUE, true); searcher.search(query, dcColl); for (ScoreDoc it : dcColl.topDocs().scoreDocs) { try { long uid = Long.parseLong(readerCpy.document(it.doc).get("DocumentUid")); Document r = FactoryInstantiator.getInstance().getDocumentFactory().getDocument(uid); if (r != null) { results.add(r); } } catch (Exception ex) { } } return results; } catch (Exception ex) { throw new IndexException(ex, "Error during query parsing : " + ex.getMessage()); } }