提高缓慢的 Solr 查询性能
Improve Slow Solr Query Performance
我们在 Windows 上使用具有多个集合的 Solr。集合有多个存储和索引字段,包含 appx 200k 文档。用例用于电子商务网站搜索。索引的大小是 appx。 200MB
虽然正常搜索需要不到几毫秒,但我需要查找多个类别的所有数据的查询大约需要 1100 毫秒到 1200 毫秒。查询包括 appx。 400 个类别或诸如此类的内容..
类别:(5 或 33 或 312 或 1192 或 1193 或 1196 或 .....)
我已将堆大小增加到 4gb,并将 Solr 缓存值配置为更高的大小,这将查询时间从 2000 毫秒减少到 1100 毫秒,但我们正在寻求更多改进。
我还在 Solr UI 上找到了以下内容:
锁工厂=org.apache.lucene.store.NativeFSLockFactory@56761b2a; maxCacheMB=48.0 maxMergeSizeMB=4.0
但不确定这是否有影响?如果是,如何更改?
你能建议我们还能做什么吗?如果您需要更多详细信息,请告诉我。
谢谢期待
您应该添加完整的请求,以便更容易提供一些建议。但是,从你的句子 "The query includes appx. 400 categories with OR something like.." 我了解到你将你的大条款放在 q 参数中?那不是正确的做法。
而是使用 q=* :* 并将您的子句放在 fq 中。这样,它就会被缓存起来,后续的查询就会快很多。如果您获得良好的缓存命中率,查询将明显更快。
作为第二件事,您可能会尝试(但首先进行上述操作)将大 OR 子句转换为范围子句(或组合),如:
Category:[5 TO 1190] OR Category:[1192 TO 1196]
如果您的类型是色调,并且您可以通过显着减小它的大小将子句转换为范围组合,它也可能有效
我们在 Windows 上使用具有多个集合的 Solr。集合有多个存储和索引字段,包含 appx 200k 文档。用例用于电子商务网站搜索。索引的大小是 appx。 200MB
虽然正常搜索需要不到几毫秒,但我需要查找多个类别的所有数据的查询大约需要 1100 毫秒到 1200 毫秒。查询包括 appx。 400 个类别或诸如此类的内容..
类别:(5 或 33 或 312 或 1192 或 1193 或 1196 或 .....)
我已将堆大小增加到 4gb,并将 Solr 缓存值配置为更高的大小,这将查询时间从 2000 毫秒减少到 1100 毫秒,但我们正在寻求更多改进。
我还在 Solr UI 上找到了以下内容: 锁工厂=org.apache.lucene.store.NativeFSLockFactory@56761b2a; maxCacheMB=48.0 maxMergeSizeMB=4.0
但不确定这是否有影响?如果是,如何更改? 你能建议我们还能做什么吗?如果您需要更多详细信息,请告诉我。
谢谢期待
您应该添加完整的请求,以便更容易提供一些建议。但是,从你的句子 "The query includes appx. 400 categories with OR something like.." 我了解到你将你的大条款放在 q 参数中?那不是正确的做法。
而是使用 q=* :* 并将您的子句放在 fq 中。这样,它就会被缓存起来,后续的查询就会快很多。如果您获得良好的缓存命中率,查询将明显更快。
作为第二件事,您可能会尝试(但首先进行上述操作)将大 OR 子句转换为范围子句(或组合),如:
Category:[5 TO 1190] OR Category:[1192 TO 1196]
如果您的类型是色调,并且您可以通过显着减小它的大小将子句转换为范围组合,它也可能有效