如何在solrj中使用Solr的所有内核

时间:2015-06-16 12:32:23

标签: java indexing solr lucene solrj

我已经下载了solr 5.2.0并已开始使用$solr_home/bin/solr start

日志说明:

等待看到Solr在端口8983上收听[/]
在端口8983(pid=17330)上启动Solr服务器。快乐的搜索!

然后我访问http://localhost:8983/solr并使用Core Admin / new Core作为Core1创建了一个新核心(使用solr-5.2.0/server/solr/configsets/data_driven_schema_configs/config作为新核心)

然后我编写了一个索引几条记录的java代码

守则如下:

public static void main(String[] args) throws IOException, SolrServerException {

    HttpSolrClient solrClient =  new HttpSolrClient("http://localhost:8983/solr/core1"); //$NON-NLS-1$4
    //HttpSolrClient solrClient =  new HttpSolrClient(args[0]); //$NON-NLS-1$4

    // Empty the database...
    solrClient.deleteByQuery( "*:*" );// delete everything! //$NON-NLS-1$
    System.out.println("cleared"); //$NON-NLS-1$
    ArrayList<SolrInputDocument> docs = new ArrayList<>();

    long starttime = System.currentTimeMillis();
    for (int i = 0; i < 1000000; ++i) { 
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("bat", "book"+i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("id", "book id -" + i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("name", "The Legend of the Hobbit part 1 " + i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("id1", "book id -" + i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("name1", "The Legend of the Hobbit part 2 " + i); //$NON-NLS-1$ //$NON-NLS-2$
        doc.addField("id2", "book id -" + i); //$NON-NLS-1$ //$NON-NLS-2$

        docs.add(doc);

        if (i % 250000 == 0) {
            solrClient.add(docs);
            System.out.println("added "+ i + "documents"); //$NON-NLS-1$ //$NON-NLS-2$
            docs.clear();
        }
    }
    solrClient.add(docs);
    System.out.println("completed adding to Solr. Now commiting.. Please wait"); //$NON-NLS-1$
    solrClient.commit();
    long endtime = System.currentTimeMillis();
    System.out.println("process completed in "+(endtime-starttime)/1000+" seconds"); //$NON-NLS-1$ //$NON-NLS-2$
}

运行代码后,我检查 http://localhost:8983/solr/#/~cores/core1 并看到索引的1000000个文件。

然后我添加了另一个核心(以与核心1类似的方式命名为core2)然后再次运行这个工作,这一次,我看到核心2没有显示任何文档,只有核心1仍然显示。

任何人都可以建议如何使用solr的内核来分发和存储文档,以便我可以更快地索引数据。我的假设是,如果我增加内核数量,索引的速度应该增加。

如果有人尝试并成功使用这两个内核并看到性能提升,那么任何人都会告诉我。

感谢。

1 个答案:

答案 0 :(得分:1)

在你的代码中,它仍然指向core1。

HttpSolrClient solrClient =  new HttpSolrClient("http://localhost:8983/solr/core1"

如果你想拥有core2的indexex

你需要在这里改变

HttpSolrClient solrClient =  new HttpSolrClient("http://localhost:8983/solr/core2"

在此更改之后尝试运行作业,它将为core2索引。