Solr SearchComponent获取所有文档

时间:2014-05-29 20:38:30

标签: java solr

我只是编写一个solr插件(SearchComponent),并希望迭代为查询找到的所有文档。这是我在流程方法中的代码的一部分:

    // Searcher to search a document
    SolrIndexSearcher searcher  = rb.req.getSearcher();
    // Getting the list of documents found for the query
    DocList docs = rb.getResults().docList;
    // Return if no results are found for the query
    if (docs == null || docs.size() == 0) {
        return;
    }
    // Get the iterator for the documents that will be returned
    DocIterator iterator = docs.iterator();
    // Iterate over all documents and count occurrences
    for (int i = 0; i < docs.size(); i++) {
        try {
            // Getting the current document ID
            int docid = iterator.nextDoc();
            // Fetch the document from the searcher
            Document doc = searcher.doc(docid);
            // do stuff
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
        }
    }

现在我找到了一种方法,我可以迭代所有将返回的文件,即如果找到1300个文件用于查询,我只返回20,我现在只用这种方法迭代20多个。我有可能获得全套文件(1300)吗?

1 个答案:

答案 0 :(得分:2)

有可能这样做。您使用的DocList仅包含从'start'开始的'rows'文档。如果要迭代所有'numFound'文档 - 请通过

使用DocSet
rb.getResults().docSet

了解这种机制 - http://wiki.apache.org/solr/FAQ#How_can_I_get_ALL_the_matching_documents_back.3F_..._How_can_I_return_an_unlimited_number_of_rows.3F