如题,使用EmbeddedSolrServer提交的数据,在solr server查询不出来,只有重启solr server之后才能查询到。查询互联网无果之后,我忽然想到使用CommonsHttpSolrServer来commit()一下,结果大快人心,问题解决。
为什么要使用EmbeddedSolrServer呢?据某些资料介绍,如果solr server和client在同一台机器上,使用EmbeddedSolrServer(直接通过lucene写磁盘)比使用CommonsHttpSolrServer(http访问)要快50%。
下面以简单的代码说明这个问题。
首先是EmbeddedSolrServer的初始化,和wiki的一样,很简单:
CommonsHttpSolrServer的初始化也和wiki的一样。
提交代码:
为什么要使用EmbeddedSolrServer呢?据某些资料介绍,如果solr server和client在同一台机器上,使用EmbeddedSolrServer(直接通过lucene写磁盘)比使用CommonsHttpSolrServer(http访问)要快50%。
下面以简单的代码说明这个问题。
首先是EmbeddedSolrServer的初始化,和wiki的一样,很简单:
System.setProperty("solr.solr.home", "");
CoreContainer.Initializer initializer = new CoreContainer.Initializer();
CoreContainer coreContainer = initializer.initialize();
EmbeddedSolrServer server = new EmbeddedSolrServer(coreContainer, "");
CommonsHttpSolrServer的初始化也和wiki的一样。
提交代码:
embeddedSolrServer.add(docList);
embeddedSolrServer.commit();
commonsHttpSolrServer.commit();// 如果没有http的commit,solr server不会查询到刚才提交的数据