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.meresco.lucene.search.TopScoreDocSuperCollector.java

License:Open Source License

@Override
protected TopDocSubCollector<TopScoreDocSuperCollector> createSubCollector() throws IOException {
    return new TopDocSubCollector<TopScoreDocSuperCollector>(
            TopScoreDocCollector.create(super.numHits, this.docsScoredInOrder), this);
}

From source file:org.ms123.common.data.lucene.LuceneServiceImpl.java

License:Open Source License

private Map _doQuery(String namespace, String queryString) throws Exception {
    System.out.println("LuceneServiceImpl.query:" + queryString + "/" + namespace);
    try {//from  w  w w .ja  v a2s .  co m
        IndexSearcher searcher = getIndexSearcher(namespace);
        StoreDesc sdesc = StoreDesc.getNamespaceData(namespace);
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_33);
        QueryParser parser = new QueryParser(Version.LUCENE_33, "fulltext", analyzer);
        parser.setAllowLeadingWildcard(true);
        parser.setDefaultOperator(QueryParser.AND_OPERATOR);
        Query query = parser.parse(queryString);
        System.out.println("queryParsed:" + query);
        TopScoreDocCollector collector = TopScoreDocCollector.create(100000, true);
        searcher.search(query, collector);
        ScoreDoc[] hits = collector.topDocs().scoreDocs;
        System.out.println("Hits:" + hits.length);
        Map<String, List> retMap = new HashMap();
        Map<String, List> viewMap = new HashMap();
        for (int i = 0; i < hits.length && i < MAX; i++) {
            Document hitDoc = searcher.doc(hits[i].doc);
            System.out.println(hitDoc.get("id") + ",module:" + hitDoc.get(ENTITY));
            String entity = hitDoc.get(ENTITY);
            List viewFields = viewMap.get(entity);
            if (viewFields == null) {
                //viewFields = m_settingService.getEntityViewConfigFields(p, sysMap);
                //@@@MS viewFields = m_settingService.getFieldsForEntityView(sdesc,entity,"global-search");
                viewFields = m_settingService.getFieldsForEntityView(sdesc.getNamespace(), entity,
                        "global-search");
                viewMap.put(entity, viewFields);
            }
            List hitList = retMap.get(entity);
            if (hitList == null) {
                hitList = new ArrayList();
                retMap.put(entity, hitList);
            }
            fillHitList(hitDoc, hitList, viewFields);
        }
        System.out.println("retMap:" + retMap);
        return retMap;
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException("LuceneServiceImpl.queryIdList", e);
    }
}

From source file:org.ms123.common.data.lucene.LuceneServiceImpl.java

License:Open Source License

public List<Integer> queryIdList(String namespace, String entityName, String queryString) {
    List<Integer> idList = new ArrayList();
    try {//w  ww.j  a va2 s. c  om
        IndexSearcher searcher = getIndexSearcher(namespace);
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_33);
        QueryParser parser = new QueryParser(Version.LUCENE_33, "fulltext", analyzer);
        parser.setAllowLeadingWildcard(true);
        parser.setDefaultOperator(QueryParser.AND_OPERATOR);
        Query query = parser.parse(queryString + " AND module:" + entityName);
        System.out.println("queryParsed:" + query);
        TopScoreDocCollector collector = TopScoreDocCollector.create(100000, true);
        searcher.search(query, collector);
        System.out.println("searcher.maxDocs:" + searcher.maxDoc());
        ScoreDoc[] hits = collector.topDocs().scoreDocs;
        System.out.println("Hits:" + hits.length);
        for (int i = 0; i < hits.length; i++) {
            Document hitDoc = searcher.doc(hits[i].doc);
            // getting actual document 
            System.out.println(hitDoc.get("id"));
            idList.add(Integer.parseInt(hitDoc.get("id")));
        }
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException("LuceneServiceImpl.queryIdList", e);
    }
    System.out.println("idList:" + idList);
    return idList;
}

From source file:org.ofbiz.content.test.LuceneTests.java

License:Apache License

public void testSearchTermHand() throws Exception {
    Map<String, Object> ctx = new HashMap<String, Object>();
    ctx.put("contentId", "WebStoreCONTENT");
    ctx.put("userLogin", userLogin);
    Map<String, Object> resp = dispatcher.runSync("indexContentTree", ctx);
    assertTrue("Could not init search index", ServiceUtil.isSuccess(resp));
    try {/*from w  ww  . jav  a 2s  .co m*/
        Thread.sleep(3000); // sleep 3 seconds to give enough time to the indexer to process the entries
    } catch (Exception e) {
    }
    Directory directory = FSDirectory.open(new File(SearchWorker.getIndexPath("content")));
    DirectoryReader r = null;
    try {
        r = DirectoryReader.open(directory);
    } catch (Exception e) {
        fail("Could not open search index: " + directory);
    }

    BooleanQuery combQuery = new BooleanQuery();
    String queryLine = "hand";

    IndexSearcher searcher = new IndexSearcher(r);
    Analyzer analyzer = new StandardAnalyzer(SearchWorker.LUCENE_VERSION);

    QueryParser parser = new QueryParser(SearchWorker.LUCENE_VERSION, "content", analyzer);
    Query query = parser.parse(queryLine);
    combQuery.add(query, BooleanClause.Occur.MUST);

    TopScoreDocCollector collector = TopScoreDocCollector.create(10, false);
    searcher.search(combQuery, collector);

    assertEquals("Only 1 result expected from the testdata", 1, collector.getTotalHits());
}

From source file:org.openmrs.module.conceptmanagementapps.api.impl.ConceptManagementAppsServiceImpl.java

License:Open Source License

private Set<Integer> searchIndexesGetAncestorTermIds(String termId, Set<Long> listOfNewTermIds,
        Set<Integer> listOfDocIds, ConceptSource conceptSource, IndexSearcher searcher) {
    try {//w ww . j av a 2s  .  c om

        TopScoreDocCollector sourceIdCollector = TopScoreDocCollector.create(1000, true);
        Query sourceIdQuery = new QueryParser(Version.LUCENE_44, PARENT_TERM, analyzer).parse(termId);
        searcher.search(sourceIdQuery, sourceIdCollector);
        ScoreDoc[] hits = sourceIdCollector.topDocs().scoreDocs;

        for (int i = 0; i < hits.length; ++i) {
            if (!getManageSnomedCTProcessCancelled()) {
                int docId = hits[i].doc;
                Document d = searcher.doc(docId);

                Long id = Long.valueOf(d.get(ROW_ID)).longValue();
                String childIdString = d.get(CHILD_TERM);

                int listSizeBefore = listOfNewTermIds.size();
                listOfNewTermIds.add(id);
                listOfDocIds.add(docId);
                int listSizeAfter = listOfNewTermIds.size();
                if (listSizeAfter > listSizeBefore) {

                    searchIndexesGetAncestorTermIds(childIdString, listOfNewTermIds, listOfDocIds,
                            conceptSource, searcher);

                }
            } else {
                return null;
            }
        }

    } catch (Exception e) {
        log.error(e);
    }

    return listOfDocIds;

}

From source file:org.openmrs.module.conceptmanagementapps.api.impl.ConceptManagementAppsServiceImpl.java

License:Open Source License

private List<ConceptReferenceTerm> createNewMappings(List<ConceptReferenceTerm> listOfExistingTerms,
        IndexSearcher searcher, ConceptMapType mapType) {

    List<ConceptReferenceTerm> listOfTermsWithNewMappings = new ArrayList<ConceptReferenceTerm>();
    Map<String, ConceptReferenceTerm> termHashMap = createConceptReferenceTermCodeHashMap(listOfExistingTerms);

    try {/*from w ww . j  a  v  a  2 s .c  o m*/

        for (ConceptReferenceTerm term : listOfExistingTerms) {
            if (!getManageSnomedCTProcessCancelled()) {
                boolean mapAdded = false;
                Set<Long> listOfTermIdsAlreadyMapped = new HashSet<Long>();

                TopScoreDocCollector sourceIdCollector = TopScoreDocCollector.create(1000, true);
                Query sourceIdQuery = new QueryParser(Version.LUCENE_44, PARENT_TERM, analyzer)
                        .parse(term.getCode());
                searcher.search(sourceIdQuery, sourceIdCollector);
                ScoreDoc[] hits = sourceIdCollector.topDocs().scoreDocs;

                for (int i = 0; i < hits.length; ++i) {

                    int docId = hits[i].doc;
                    Document termIds = searcher.doc(docId);

                    int beforeSize = listOfTermIdsAlreadyMapped.size();
                    listOfTermIdsAlreadyMapped.add(Long.parseLong(termIds.get(CHILD_TERM)));
                    int afterSize = listOfTermIdsAlreadyMapped.size();

                    if (beforeSize < afterSize) {
                        ConceptReferenceTerm childTerm = termHashMap.get(termIds.get(CHILD_TERM));
                        ConceptReferenceTermMap newMap = new ConceptReferenceTermMap();

                        newMap.setConceptMapType(mapType);
                        newMap.setTermA(term);
                        newMap.setTermB(childTerm);

                        term.addConceptReferenceTermMap(newMap);
                        mapAdded = true;
                    }
                }
                if (mapAdded) {
                    listOfTermsWithNewMappings.add(term);
                }

            } else {
                return null;
            }
        }
    }

    catch (Exception e) {
        log.error("Error Creating New Mappings ", e);
    }
    return listOfTermsWithNewMappings;

}

From source file:org.openmrs.module.conceptmanagementapps.api.impl.ConceptManagementAppsServiceImpl.java

License:Open Source License

private ConceptReferenceTerm addNameToReferenceTerm(ConceptReferenceTerm term, IndexSearcher searcher) {

    if (!getManageSnomedCTProcessCancelled()) {
        TopScoreDocCollector termCollector = TopScoreDocCollector.create(1000, true);
        String currentTermWithName = null;
        Document currentTermDoc = null;

        try {//from w  w w .j  av a 2 s.c o  m
            Query termQuery = new QueryParser(Version.LUCENE_44, TERM_ID, analyzer).parse(term.getCode());

            if (termQuery != null) {

                searcher.search(termQuery, termCollector);
                ScoreDoc[] termHits = termCollector.topDocs().scoreDocs;

                if (searcher != null && termHits.length > 0) {
                    for (int i = 0; i < termHits.length; ++i) {

                        int docId = termHits[i].doc;
                        Document d = searcher.doc(docId);

                        if (currentTermDoc == null) {

                            currentTermDoc = searcher.doc(docId);
                            currentTermWithName = currentTermDoc.get(TERM_NAME);

                        } else {

                            if (Integer.parseInt(d.get(EFFECTIVE_DATE)) > Integer
                                    .parseInt(currentTermDoc.get(EFFECTIVE_DATE))) {

                                currentTermDoc = d;
                                currentTermWithName = d.get(TERM_NAME);

                            }
                        }

                    }
                    term.setName(currentTermWithName);
                }
            }
        } catch (org.apache.lucene.queryparser.classic.ParseException e) {
            log.error("Lucene Error Adding Names To Reference Term ", e);
        } catch (IOException e) {
            log.error("Error Adding Names To Reference Term ", e);
        }
        return term;

    } else {
        return null;
    }
}

From source file:org.openmrs.module.conceptmanagementapps.api.impl.ConceptManagementAppsServiceImpl.java

License:Open Source License

private List<ConceptReferenceTerm> addNamesToAllReferenceTerms(List<ConceptReferenceTerm> terms,
        IndexSearcher searcher) {// w  w  w .  j a  va  2 s  .com
    List<ConceptReferenceTerm> namedTerms = new ArrayList<ConceptReferenceTerm>();

    try {
        for (ConceptReferenceTerm term : terms) {
            if (!getManageSnomedCTProcessCancelled()) {
                String currentTermWithName = null;
                Document currentTermDoc = null;

                Query termQuery = new QueryParser(Version.LUCENE_44, TERM_ID, analyzer).parse(term.getCode());

                if (termQuery != null) {
                    TopScoreDocCollector termCollector = TopScoreDocCollector.create(1000, true);
                    searcher.search(termQuery, termCollector);
                    ScoreDoc[] termHits = termCollector.topDocs().scoreDocs;

                    if (searcher != null && termHits.length > 0) {
                        for (int i = 0; i < termHits.length; ++i) {

                            int docId = termHits[i].doc;
                            Document d = searcher.doc(docId);

                            if (currentTermDoc == null) {

                                currentTermDoc = searcher.doc(docId);
                                currentTermWithName = currentTermDoc.get(TERM_NAME);

                            } else {

                                if (Integer.parseInt(d.get(EFFECTIVE_DATE)) > Integer
                                        .parseInt(currentTermDoc.get(EFFECTIVE_DATE))) {

                                    currentTermDoc = d;
                                    currentTermWithName = d.get(TERM_NAME);

                                }
                            }

                        }

                        term.setName(currentTermWithName);
                        namedTerms.add(term);
                    }
                }

            } else {
                return null;
            }
        }

    } catch (org.apache.lucene.queryparser.classic.ParseException e) {
        log.error("Adding Names To All Reference Terms ", e);
    } catch (IOException e) {
        log.error("Error Adding Names To All Reference Terms ", e);
    }
    return namedTerms;

}

From source file:org.opensolaris.opengrok.search.SearchEngine.java

License:Open Source License

/**
 *
 * @param paging whether to use paging (if yes, first X pages will load
 * faster)/*from   w w  w  . j a va 2  s  .c o  m*/
 * @param root which db to search
 * @throws IOException
 */
private void searchSingleDatabase(File root, boolean paging) throws IOException {
    IndexReader ireader = DirectoryReader.open(FSDirectory.open(root));
    searcher = new IndexSearcher(ireader);
    collector = TopScoreDocCollector.create(hitsPerPage * cachePages, docsScoredInOrder);
    searcher.search(query, collector);
    totalHits = collector.getTotalHits();
    if (!paging && totalHits > 0) {
        collector = TopScoreDocCollector.create(totalHits, docsScoredInOrder);
        searcher.search(query, collector);
    }
    hits = collector.topDocs().scoreDocs;
    for (ScoreDoc hit : hits) {
        int docId = hit.doc;
        Document d = searcher.doc(docId);
        docs.add(d);
    }
}

From source file:org.opensolaris.opengrok.search.SearchEngine.java

License:Open Source License

/**
 *
 * @param paging whether to use paging (if yes, first X pages will load
 * faster)//ww  w . jav  a  2  s .  c  o  m
 * @param root list of projects to search
 * @throws IOException
 */
private void searchMultiDatabase(List<Project> root, boolean paging) throws IOException {
    IndexReader[] subreaders = new IndexReader[root.size()];
    File droot = new File(RuntimeEnvironment.getInstance().getDataRootFile(), IndexDatabase.INDEX_DIR);
    int ii = 0;
    for (Project project : root) {
        IndexReader ireader = (DirectoryReader.open(FSDirectory.open(new File(droot, project.getPath()))));
        subreaders[ii++] = ireader;
    }
    MultiReader searchables = new MultiReader(subreaders, true);
    if (Runtime.getRuntime().availableProcessors() > 1) {
        int noThreads = 2 + (2 * Runtime.getRuntime().availableProcessors()); //TODO there might be a better way for counting this - or we should honor the command line option here too!
        ExecutorService executor = Executors.newFixedThreadPool(noThreads);
        searcher = new IndexSearcher(searchables, executor);
    } else {
        searcher = new IndexSearcher(searchables);
    }
    collector = TopScoreDocCollector.create(hitsPerPage * cachePages, docsScoredInOrder);
    searcher.search(query, collector);
    totalHits = collector.getTotalHits();
    if (!paging && totalHits > 0) {
        collector = TopScoreDocCollector.create(totalHits, docsScoredInOrder);
        searcher.search(query, collector);
    }
    hits = collector.topDocs().scoreDocs;
    for (ScoreDoc hit : hits) {
        int docId = hit.doc;
        Document d = searcher.doc(docId);
        docs.add(d);
    }
}