Solrj全选

时间:2012-06-21 17:05:58

标签: solr lucene

我在通过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", "*:*");我必须终止编译,否则它会超时。如果我替换

,也会发生同样的情况
"*:*"

只是

"*"

另外,我试过parameters.set("qt", "/select");无济于事。

如何通过Solrj选择所有并实际获得结果?

3 个答案:

答案 0 :(得分:2)

我不确定为什么会这样有效但是在失败了一百个想法之后,这个想法:

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); 
    }

希望这可以帮助那些人。

答案 1 :(得分:1)

您应该使用“q”作为参数,以下是正确的语法。

parameters.set("?q", "*:*");

它以“?q”返回的原因是没有查询要运行,因此返回快速。

首先,请通过浏览器进行测试。您还可以设置要返回的行数,以便不返回大的结果集。

parameters.set("rows", 5);

一旦solr查询返回,您必须对结果进行分页。如果你有一个大型集合,你将无法一次性检索所有这些。

答案 2 :(得分:0)

我认为你应该在引用SolrServer对象时尝试指定你的核心,即写

SolrServer solr = new HttpSolrServer("http://localhost:8080/solr/collection1");

其中collection1是您要使用的核心名称。