我使用Java来查询该有一组我感兴趣的已知的ID内的ID结果的Solr服务器。
我能想到的最好的办法让这些只是结果我感兴趣的是建立一个长期的查询字符串看起来是这样的:
q=(item_id:XXX33-3333 OR item_id:YYY42-3445 OR item_id:JFDE-3838)
我生成这个字符串, queryString
,使我的请求之前,有列入我希望最终使请求超过1500这样的id。 我使用的是HTTP POST进行查询这样:
HttpPost post = new HttpPost(url);
post.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
StringEntity entity = new StringEntity(queryString, "UTF-8");
entity.setContentType("application/x-www-form-urlencoded; charset=utf-8");
post.setEntity(entity);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
如果我限制查询到只是第1000个IDS,它成功,我得到的结果早在我所期望的。 但是,如果我增加查询到包括我真正感兴趣的所有1500年,我得到了以下错误的HTTP响应400的代码:
HTTP/1.1 400 org.apache.lucene.queryParser.ParseException: Cannot parse '[my query here...]
是否有IDS,我能够或者一起在一个Solr的查询的数量限制吗? 难道还有其他原因,当我去过去的1000,这可能是失败的? 我已经尝试,它在1024左右失败(我的ID是几乎一样的长度),所以它似乎暗示有一个人物或任期限制。
或者,如果有人有我怎么能找回我的另一寻找项目的好建议,更聪明,这样,我很想听到它。 我的备份解决方案,只是查询Solr的所有项目,分析结果,并使用属于集合我感兴趣的人。我不希望这样做,因为数据来源可能有一个项目数以万计,这将是低效的。