我正在使用Solr通过SolrBridge扩展开发Magento Community Edition网站。当只有几千个SKU时系统很快,但在导入~100k产品后,搜索速度明显减慢。页面加载从不到一秒钟变为超过两秒,New Relic监视此时确定等待Solr的响应。
注意到搜索建议仍然很快,我决定调查自动完成搜索和完整搜索列表之间的区别。在尝试改变搜索的不同方面以使其与自动完成搜索一致之后。
当我禁用查询的范围字段部分时系统显着增加,如下所示:
facet.range=GBP_0_price_decimal&f.GBP_0_price_decimal.facet.range.start=0&f.GBP_0_price_decimal.facet.range.end=1000000&f.GBP_0_price_decimal.facet.range.gap=100&f.GBP_0_price_decimal.facet.mincount=1
包含此代码后,搜索范围为1.7-1.8秒。没有它,搜索只需几毫秒。
我相信这是该领域的架构定义。它确实被编入索引:
<dynamicField name="*_decimal" type="float" indexed="true" stored="true" />
知道减速因素是什么? Solr正在运行一个核心。它与Magento和数据库在同一个物理盒子上。这个盒子的规格相对较高 - 64GB内存和双Xeon E5620s。
感谢您的帮助。如果您需要更多信息来提供帮助,请与我们联系。
答案 0 :(得分:1)
小平面间隙(100)可能太小。 您正在生成(可能)10000个桶用于范围内的分面(facet.end除以facet.gap),这有点沉重。
我可以增加间隙尺寸或使用更小的范围。