List of usage examples for org.apache.lucene.search TopScoreDocCollector create
public static TopScoreDocCollector create(int numHits, int totalHitsThreshold)
From source file:org.drftpd.vfs.index.lucene.LuceneEngine.java
License:Open Source License
/** * @param startNode/* w w w . j ava2 s .c om*/ * The dir where the search will begin. * @param text * The text to be searched. * @param inodeType * If you are searching for a File, Dir or both. */ public Set<String> findInode(DirectoryHandle startNode, String text, InodeType inodeType) throws IndexException { IndexSearcher iSearcher = null; IndexReader iReader = null; try { Set<String> inodes = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER); BooleanQuery query = new BooleanQuery(); if (!startNode.getPath().equals(VirtualFileSystem.separator)) { PrefixQuery parentQuery = new PrefixQuery(makeParentPathTermFromInode(startNode)); query.add(parentQuery, Occur.MUST); } Query nameQuery = LuceneUtils.analyze("name", TERM_NAME, text); query.add(nameQuery, Occur.MUST); if (inodeType == InodeType.ANY) { /* * The following isnt needed, we simply ignore search for this * field. * * query.add(dirQuery, Occur.SHOULD); query.add(fileQuery, * Occur.SHOULD); */ } else if (inodeType == InodeType.DIRECTORY) { query.add(QUERY_DIRECTORY, Occur.MUST); } else if (inodeType == InodeType.FILE) { query.add(QUERY_FILE, Occur.MUST); } iReader = IndexReader.open(_iWriter, true); iSearcher = new IndexSearcher(iReader); TopScoreDocCollector topScoreDocsCollector = TopScoreDocCollector.create(_maxHitsNumber, false); iSearcher.search(query, topScoreDocsCollector); logger.debug("Query: " + query); for (ScoreDoc scoreDoc : topScoreDocsCollector.topDocs().scoreDocs) { Document doc = iSearcher.doc(scoreDoc.doc, SIMPLE_FIELD_SELECTOR); inodes.add(doc.getFieldable("fullPath").stringValue()); } return inodes; } catch (CorruptIndexException e) { logger.error(EXCEPTION_OCCURED_WHILE_SEARCHING, e); throw new IndexException("Unable to search the index", e); } catch (IOException e) { logger.error(EXCEPTION_OCCURED_WHILE_SEARCHING, e); throw new IndexException("Unable to search the index", e); } finally { if (iSearcher != null) { try { iSearcher.close(); } catch (IOException e) { logger.error("IOException closing IndexSearcher", e); } } if (iReader != null) { try { iReader.close(); } catch (IOException e) { logger.error("IOException closing IndexReader obtained from the IndexWriter", e); } } } }
From source file:org.drools.workbench.screens.drltext.backend.server.indexing.IndexRuleAttributeNameAndValueCompositionTest.java
License:Apache License
@Test public void testIndexDrlRuleAttributeNameAndValueComposition() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("drl5.drl"); final String drl = loadText("drl5.drl"); ioService().write(path, drl);// ww w . j a v a2 s .c o m Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index final Index index = getConfig().getIndexManager() .get(org.uberfire.ext.metadata.io.KObjectUtil.toKCluster(basePath.getFileSystem())); //DRL defining a RuleFlow-Group named myRuleFlowGroup. This should match drl5.drl //This checks whether there is a Rule Attribute "ruleflow-group" and its Value is "myRuleflowGroup" { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder().addTerm(new ValueRuleAttributeIndexTerm("ruleflow-group")) .addTerm(new ValueRuleAttributeValueIndexTerm("myRuleFlowGroup")).build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); final List<KObject> results = new ArrayList<KObject>(); for (int i = 0; i < hits.length; i++) { results.add(KObjectUtil.toKObject(searcher.doc(hits[i].doc))); } assertContains(results, path); ((LuceneIndex) index).nrtRelease(searcher); } //DRL defining a RuleFlow-Group named myAgendaGroup. This should *NOT* match drl5.drl { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder().addTerm(new ValueRuleAttributeIndexTerm("ruleflow-group")) .addTerm(new ValueRuleAttributeValueIndexTerm("myAgendaGroup")).build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(0, hits.length); ((LuceneIndex) index).nrtRelease(searcher); } }
From source file:org.drools.workbench.screens.drltext.backend.server.indexing.IndexRuleAttributeNameAndValueTest.java
License:Apache License
@Test public void testIndexDrlRuleAttributeNameAndValue() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("drl1.drl"); final String drl = loadText("drl1.drl"); ioService().write(path, drl);// w w w .j ava 2 s .co m Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index final Index index = getConfig().getIndexManager().get(KObjectUtil.toKCluster(basePath.getFileSystem())); { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final BooleanQuery query = new BooleanQuery(); query.add(new TermQuery(new Term(RuleAttributeIndexTerm.TERM, "ruleflow-group")), BooleanClause.Occur.MUST); query.add(new TermQuery(new Term(RuleAttributeValueIndexTerm.TERM, "nonexistent")), BooleanClause.Occur.MUST); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(0, hits.length); ((LuceneIndex) index).nrtRelease(searcher); } //This simply checks whether there is a Rule Attribute "ruleflow-group" and a Rule Attribute Value "myRuleflowGroup" //The specific query does not check that the Rule Attribute Value corresponds to the Rule Attribute, so it is possible //that the value relates to a different Rule Attribute. { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final BooleanQuery query = new BooleanQuery(); query.add(new TermQuery(new Term(RuleAttributeIndexTerm.TERM, "ruleflow-group")), BooleanClause.Occur.MUST); query.add(new TermQuery(new Term(RuleAttributeValueIndexTerm.TERM, "myruleflowgroup")), BooleanClause.Occur.MUST); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); ((LuceneIndex) index).nrtRelease(searcher); } }
From source file:org.drools.workbench.screens.drltext.backend.server.indexing.IndexRuleAttributeNameTest.java
License:Apache License
@Test public void testIndexDrlRuleAttributeNames() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("drl1.drl"); final String drl = loadText("drl1.drl"); ioService().write(path, drl);//from w ww. j av a 2 s . co m Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index final Index index = getConfig().getIndexManager().get(KObjectUtil.toKCluster(basePath.getFileSystem())); { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder().addTerm(new ValueRuleAttributeIndexTerm("ruleflow-group")) .build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); ((LuceneIndex) index).nrtRelease(searcher); } }
From source file:org.drools.workbench.screens.drltext.backend.server.indexing.IndexRuleMultipleTypesTest.java
License:Apache License
@Test public void testIndexDrlRuleMultipleTypes() throws IOException, InterruptedException { //Add test files final Path path1 = basePath.resolve("drl3.drl"); final String drl1 = loadText("drl3.drl"); ioService().write(path1, drl1);// ww w . j a v a2s . com final Path path2 = basePath.resolve("drl4.drl"); final String drl2 = loadText("drl4.drl"); ioService().write(path2, drl2); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index final Index index = getConfig().getIndexManager() .get(org.uberfire.ext.metadata.io.KObjectUtil.toKCluster(basePath.getFileSystem())); { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder() .addTerm(new ValueTypeIndexTerm( "org.drools.workbench.screens.drltext.backend.server.indexing.classes.Applicant")) .build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); final List<KObject> results = new ArrayList<KObject>(); for (int i = 0; i < hits.length; i++) { results.add(KObjectUtil.toKObject(searcher.doc(hits[i].doc))); } assertContains(results, path1); assertContains(results, path2); ((LuceneIndex) index).nrtRelease(searcher); } { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder() .addTerm(new ValueTypeIndexTerm( "org.drools.workbench.screens.drltext.backend.server.indexing.classes.Mortgage")) .build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); final List<KObject> results = new ArrayList<KObject>(); for (int i = 0; i < hits.length; i++) { results.add(KObjectUtil.toKObject(searcher.doc(hits[i].doc))); } assertContains(results, path2); ((LuceneIndex) index).nrtRelease(searcher); } }
From source file:org.drools.workbench.screens.drltext.backend.server.indexing.IndexRuleTest.java
License:Apache License
@Test public void testIndexDrlRules() throws IOException, InterruptedException { //Add test files final Path path = basePath.resolve("drl1.drl"); final String drl = loadText("drl1.drl"); ioService().write(path, drl);//from w w w . ja v a 2 s .c om Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index final Index index = getConfig().getIndexManager().get(KObjectUtil.toKCluster(basePath.getFileSystem())); { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder().addTerm(new ValueRuleIndexTerm("myRule")).build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); ((LuceneIndex) index).nrtRelease(searcher); } }
From source file:org.drools.workbench.screens.drltext.backend.server.indexing.IndexRuleTypeTest.java
License:Apache License
@Test public void testIndexRuleTypes() throws IOException, InterruptedException { //Add test files final Path path1 = basePath.resolve("drl1.drl"); final String drl1 = loadText("drl1.drl"); ioService().write(path1, drl1);/*from w ww. java 2 s . com*/ final Path path2 = basePath.resolve("drl2.drl"); final String drl2 = loadText("drl2.drl"); ioService().write(path2, drl2); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index final Index index = getConfig().getIndexManager().get(KObjectUtil.toKCluster(basePath.getFileSystem())); { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder() .addTerm(new ValueTypeIndexTerm( "org.drools.workbench.screens.drltext.backend.server.indexing.classes.Applicant")) .build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); ((LuceneIndex) index).nrtRelease(searcher); } { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder().useWildcards().addTerm(new ValueTypeIndexTerm("*.Applicant")) .build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); ((LuceneIndex) index).nrtRelease(searcher); } }
From source file:org.drools.workbench.screens.dsltext.backend.server.indexing.IndexDslEntriesTest.java
License:Apache License
@Test public void testIndexDslEntries() throws IOException, InterruptedException { //Add test files final Path path1 = basePath.resolve("dsl1.dsl"); final String dsl1 = loadText("dsl1.dsl"); ioService().write(path1, dsl1);/*w ww .j a v a 2s . c o m*/ final Path path2 = basePath.resolve("dsl2.dsl"); final String dsl2 = loadText("dsl2.dsl"); ioService().write(path2, dsl2); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index final Index index = getConfig().getIndexManager() .get(org.uberfire.ext.metadata.io.KObjectUtil.toKCluster(basePath.getFileSystem())); { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder().useWildcards().addTerm(new ValueRuleIndexTerm("*")).build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(0, hits.length); ((LuceneIndex) index).nrtRelease(searcher); } { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder() .addTerm(new ValueTypeIndexTerm( "org.drools.workbench.screens.dsltext.backend.server.indexing.classes.Applicant")) .build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(2, hits.length); final List<KObject> results = new ArrayList<KObject>(); for (int i = 0; i < hits.length; i++) { results.add(KObjectUtil.toKObject(searcher.doc(hits[i].doc))); } assertContains(results, path1); assertContains(results, path2); ((LuceneIndex) index).nrtRelease(searcher); } { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder() .addTerm(new ValueTypeIndexTerm( "org.drools.workbench.screens.dsltext.backend.server.indexing.classes.Mortgage")) .build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); final List<KObject> results = new ArrayList<KObject>(); for (int i = 0; i < hits.length; i++) { results.add(KObjectUtil.toKObject(searcher.doc(hits[i].doc))); } assertContains(results, path2); ((LuceneIndex) index).nrtRelease(searcher); } }
From source file:org.drools.workbench.screens.dtablexls.backend.server.indexing.IndexDecisionTableXLSAttributeNameAndValueCompositionTest.java
License:Apache License
@Test public void testIndexDecisionTableXLSAttributeNameAndValueComposition() throws IOException, InterruptedException { //Add test files final Path path1 = loadXLSFile(basePath, "dtable3.xls"); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index final Index index = getConfig().getIndexManager() .get(org.uberfire.ext.metadata.io.KObjectUtil.toKCluster(basePath.getFileSystem())); //Decision Table defining a RuleFlow-Group named myRuleFlowGroup. This should match dtable3.xls //This checks whether there is a Rule Attribute "ruleflow-group" and its Value is "myRuleflowGroup" {/*from w w w . ja va 2 s .co m*/ final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder().addTerm(new ValueRuleAttributeIndexTerm("ruleflow-group")) .addTerm(new ValueRuleAttributeValueIndexTerm("myRuleFlowGroup")).build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); final List<KObject> results = new ArrayList<KObject>(); for (int i = 0; i < hits.length; i++) { results.add(KObjectUtil.toKObject(searcher.doc(hits[i].doc))); } assertContains(results, path1); ((LuceneIndex) index).nrtRelease(searcher); } //Decision Table defining a RuleFlow-Group named myAgendaGroup. This should *NOT* match dtable3.xls { final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final Query query = new QueryBuilder().addTerm(new ValueRuleAttributeIndexTerm("ruleflow-group")) .addTerm(new ValueRuleAttributeValueIndexTerm("myAgendaGroup")).build(); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(0, hits.length); ((LuceneIndex) index).nrtRelease(searcher); } }
From source file:org.drools.workbench.screens.dtablexls.backend.server.indexing.IndexDecisionTableXLSAttributeNameAndValueTest.java
License:Apache License
@Test public void testIndexDecisionTableXLSAttributeNameAndValue() throws IOException, InterruptedException { //Add test files final Path path1 = loadXLSFile(basePath, "dtable1.xls"); final Path path2 = loadXLSFile(basePath, "dtable2.xls"); Thread.sleep(5000); //wait for events to be consumed from jgit -> (notify changes -> watcher -> index) -> lucene index final Index index = getConfig().getIndexManager() .get(org.uberfire.ext.metadata.io.KObjectUtil.toKCluster(basePath.getFileSystem())); //This simply checks whether there is a Rule Attribute "ruleflow-group" and a Rule Attribute Value "myRuleflowGroup" //The specific query does not check that the Rule Attribute Value corresponds to the Rule Attribute, so it is possible //that the value relates to a different Rule Attribute. {// w ww .j ava2s .co m final IndexSearcher searcher = ((LuceneIndex) index).nrtSearcher(); final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); final BooleanQuery query = new BooleanQuery(); query.add(new TermQuery(new Term(RuleAttributeIndexTerm.TERM, "ruleflow-group")), BooleanClause.Occur.MUST); query.add(new TermQuery(new Term(RuleAttributeValueIndexTerm.TERM, "myruleflowgroup")), BooleanClause.Occur.MUST); searcher.search(query, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; assertEquals(1, hits.length); final List<KObject> results = new ArrayList<KObject>(); for (int i = 0; i < hits.length; i++) { results.add(KObjectUtil.toKObject(searcher.doc(hits[i].doc))); } assertContains(results, path1); ((LuceneIndex) index).nrtRelease(searcher); } }