使用 solrj 仅在特定文档中查找结果

Use solrj to look for results within only specific documents

我有一个 solr 服务器并使用 solrj 查询它。假设我只想在特定文档中搜索结果,并且我有我想要查看的文档的 ID。如何将查询配置为仅来自指定文档列表的 return 个结果?

    List<String> documentList = ...; // collection of Strings of the 
                                     // ID's of the documents I want 
                                     // to look for
    this.query = new SolrQuery();
    this.query.setFields("id", "score");
    this.query.addSort("score", SolrQuery.ORDER.desc);
    this.query.addSort("id", SolrQuery.ORDER.desc);
    this.query.setQuery(searchString);

我需要做什么才能使查询 return 的所有文档都是其 ID 在可接受文档列表中的文档?

我用得不多 solrj,但它应该像添加过滤器查询一样简单(我假设您不希望文档是否可以接受影响分数)文档列表,例如:

String filterQuery = "id:(1 OR 2 OR 3)";
this.query.addFilterQuery(filterQuery);

因此您需要将 documentList 转换为由 OR 分隔的字符串(是的,我相信它必须是大写的)。

如果可接受文档的数量确实很大,那么您将不得不更改您的 Solr 配置以允许在查询中使用更多的布尔项(我认为默认值为 512,或者 1024;但我使用 32768 没问题。