我有一个solr服务器并使用solrj查询它。假设我只想在特定文档中搜索结果,并且我有我想要查看的文档的ID。如何将查询配置为仅返回指定文档列表中的结果?
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);
我需要做什么才能使查询返回的所有文档都是id在可接受文档列表中的文档?
答案 0 :(得分:1)
我没有多少使用solrj
,但它应该像添加过滤器查询一样简单(我假设您不希望文档是否可以影响分数)与文档列表一样,例如:
String filterQuery = "id:(1 OR 2 OR 3)";
this.query.addFilterQuery(filterQuery);
因此,您需要将documentList
转换为由OR
分隔的字符串(是的,我相信它必须是大写的)。
如果可接受文档的数量非常大,那么您必须更改Solr配置以允许查询中有更多布尔项(我认为默认值为512,或者可能是1024;但是我已经使用32768没有问题了。