我在通过Solrj (运行Tomcat)选择我的25个文档Solr (3.6)索引中的所有内容时遇到问题。
public static void main(String[] args) throws MalformedURLException, SolrServerException {
SolrServer solr = new HttpSolrServer("http://localhost:8080/solr");
ModifiableSolrParams parameters = new ModifiableSolrParams();
parameters.set("?q", "*:*");
parameters.set("wt", "json");
QueryResponse response = solr.query(parameters);
System.out.println(response);
}我得到的结果是:
{responseHeader={status=0,QTime=0,params={?q=*:*,wt=javabin,version=2}},response={numFound=0,start=0,docs=[]}}还有,如果我把"?“在parameters.set("?q", "*:*");之外,我必须终止编译,否则它会超时。如果我将
"*:*"使用just
"*"此外,我已经尝试了parameters.set("qt", "/select");,但没有效果。
如何通过Solrj选择全部并实际获得结果?
发布于 2012-06-26 22:17:29
我不确定为什么这样做是可行的,但在失败了100个想法后,这个想法采取了:
public static void main(String[] args) throws MalformedURLException, SolrServerException {
SolrServer solr = new HttpSolrServer("http://localhost:8080/solr");
ModifiableSolrParams parameters = new ModifiableSolrParams();
parameters.set("q", "*:*"); //query everything thanks to user1452132!
parameters.set("facet", true);//without this I cant select all
parameters.set("fl", "id");//send back just the id values
parameters.set("wt", "json");//Id like this in json format please
QueryResponse response = solr.query(parameters);
System.out.println(response);
}希望这能对外面的人有所帮助。
发布于 2012-06-22 03:51:39
您应该使用"q“作为参数,下面是正确的语法。
parameters.set("?q", "*:*");它返回"?q“的原因是因为没有要运行的查询,所以它返回得很快。
首先,请通过浏览器进行测试。您还可以设置要返回的行数,这样就不会返回很大的结果集。
parameters.set("rows", 5);solr查询返回后,您必须对结果进行分页。如果你有一个很大的集合,你将不能一下子检索到所有的集合。
发布于 2013-04-12 16:04:45
我认为每当你引用SolrServer对象时,你也应该尝试指定你的核心,也就是写下
SolrServer solr = new HttpSolrServer("http://localhost:8080/solr/collection1");其中,collection1是要使用的内核的名称。
https://stackoverflow.com/questions/11143188
复制相似问题