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.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());
    }
}