Example usage for org.apache.lucene.search TopScoreDocCollector create

List of usage examples for org.apache.lucene.search TopScoreDocCollector create

Introduction

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

Prototype

public static TopScoreDocCollector create(int numHits, int totalHitsThreshold) 

Source Link

Document

Creates a new TopScoreDocCollector given the number of hits to collect and the number of hits to count accurately.

Usage

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);

    }
}