提高缓慢的 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]

如果您的类型是色调,并且您可以通过显着减小它的大小将子句转换为范围组合,它也可能有效