2011-03-15 50 views
0

我在项目中使用Solrj作为Solr客户端。Solrj(1.4.1)性能相关查询

虽然搜索,几句话,似乎Solrj需要更多的时间来发送响应,例如(8 - 12秒)。在搜索大部分其他词语时,似乎Solrj只花费较少的时间。

例如,如果我在浏览器中发布搜索网址,它仅以毫秒为单位显示QTime。

http://serverName/solr/mydata/select?q=computing&qt=myhandler&fq=category:1

但是,如果我查询使用Solrj同样从我的项目如下图所示,需要很长的时间(8 - 12秒),以产生相同的结果。因此,我怀疑Solrj是否需要很长时间才能产生结果。

SolrServer server = new CommonsHttpSolrServer(url); SolrQuery query = new SolrQuery(“computing”); query.setParam(“qt”,“myhandler”); query.setFilterQueries(“category:1”); query.setHighlight(false); QueryResponse rsp = server.query(query);

我已经尝试了POTH和GET方法。但是,两者都花费了很多时间。

任何想法为什么Solrj需要这么长的时间来处理特定的单词。它返回大约40个文档列表作为搜索结果。我甚至为此强调评论。

并以任何方式加速。

注意:我使用Tomcat并将堆大小设置为1024 MB左右。我正在使用Solr 1.4.1版本。

谢谢,

+0

检查SolrJ响应中的QTime。 – 2011-03-15 19:12:03

+0

cross-posted(附答案)在http://lucene.472066.n3.nabble.com/Solrj-performance-bottleneck-td2682797.html – 2011-03-17 00:51:09

回答

0

SolrJ并没有给直接击中Solr带来很大的性能影响。我正在使用它,Solr中的2-3ms查询将在12-15ms左右通过网络返回,其中包括完整的Web堆栈和编组到Json。我怀疑你的代码中有其他地方存在错误。尝试获取配置文件或喷洒一些打印语句,以查看时间丢失的时间。如果你要穿过网络(我怀疑你是),可以尝试ping一下,看看响应时间是多少。您还可以尝试从源服务器到您的Solr服务器的curl请求,以查看原始响应时间是什么

0

我能够调整PHP以获得与Java SolrJ的同等性能。然而,这是很多工作,并没有充分的证据。 PHP的最大问题不是速度,而是内存泄漏。当您索引数千条记录时,您必须循环遍历它们,并在PHP中产生内存泄漏。我通过使用bash脚本在PHP中调用较小的批处理来分割PHP批处理。但是我仍然会失败索引。 Java的SolrJ解决了内存泄漏问题,并提供了更好的可靠性。 Java是快速的,而不必跳过创造性的环节来获得像我必须做的bash脚本和PHP的速度。

另外,请不要在SolrJ中提交记录。打开solr配置的自动提交并允许Solr处理提交。快得多。