0

我在通过 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 实际获得结果?

4

3 回答 3

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

希望这可以帮助那里的人。

于 2012-06-26T14:17:28.667 回答
1

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

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

它返回 "?q" 的原因是没有要运行的查询,所以它返回得很快。

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

parameters.set("rows", 5);

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

于 2012-06-21T19:51:39.177 回答
0

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

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

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

于 2013-04-12T08:04:45.217 回答