2013-07-03 53 views
0

现在,我有一个紧迫的任务来提高solr的“或”查询性能。 我在两台服务器(每台服务器:16个核心,32G RAM)中部署了9个带solr-cloud的碎片。如何提高Solr“或”查询性能

文件总数:6000万,总指数大小:9G。

根据要求,我必须使用“OR”查询来获得结果。

查询词的平均数量约为15

的响应时间“或”查询是围绕1-2seconds(以下简称“AND”查询是差不多30毫秒,40毫秒)。

我们的目标:提升50%,即每个查询最多500ms-1s。

该文件将飙升到80,000,000,但是,性能应保持在500ms-1s查询。

任何意见或方法表示赞赏。提前致谢。

+0

查询的样子是怎样的? – Jayendra

+0

q =名称:(T1或T2或T3 ....) – huasanyelao

+0

最新名称字段?字符串?文字?你可以用fq来缓存结果吗? – Jayendra

回答

0

您可以尝试使用lucene-c-boost。在C++中通过某些Apache Lucene查询的优化实现(通过JNI)可以实现0到7.8倍的加速比。 见 https://github.com/mikemccand/lucene-c-boost

+0

尽管高度指定了一些查询,但它确实可以将性能提高近2倍。 – huasanyelao

0

根据您是否可以在没有评分的情况下生活,您可能只想运行多个查询。 30-40ms * 15 => 450-600ms。

缺点是你没有得到结果评分。