Solrj(1.4.1)性能相关查询

时间:2011-03-15 13:45:02

标签: solr solrj

我在项目中使用Solrj作为Solr客户端。

在搜索时,似乎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( “类别:1”); query.setHighlight(假); QueryResponse rsp = server.query(query);

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

任何想法为什么Solrj花了这么长时间来表达特定的话语。它返回大约40个文档列表作为搜索结果。我甚至评论说明了这一点。

任何加快速度的方法。

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

谢谢,

2 个答案:

答案 0 :(得分:0)

SolrJ对直接击中Solr没有产生很大的性能影响。我正在使用它,在Solr中花费2-3ms的查询将在大约12-15ms内通过网络返回,包括通过完整的Web堆栈和编组到Json。我怀疑你的代码中的其他地方有错误。尝试获取个人资料或播放一些打印语句,以查看时间丢失的位置。如果您正在穿越网络(我怀疑您是),请尝试执行ping以查看响应时间。您还可以尝试从源服务器到Solr服务器的curl请求,以查看原始响应时间

答案 1 :(得分:0)

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

另外,请勿在SolrJ中提交您的记录。在solr的配置上启用自动提交,并允许Solr处理提交。快得多。