当查询较长时,如何提高Lucene的性能?

当查询较长时,如何提高Lucene的性能?,lucene,Lucene,我一直在使用Lucene构建POI搜索和地理编码系统。经过测试,我发现当查询长度超过10个术语时。搜索速度太慢,接近1秒。我认为瓶颈在于我使用或生成布尔查询。它将获得大量的候选人文件。而且它也会消耗太多的时间来得分和排名 我改为使用和生成布尔查询。但这会降低命中的准确性。因此,我想找到一个解决方案来减少候选文档,并且在这种情况下不会降低准确性 谢谢你的帮助 如果您可以将查询表示为过滤器,那么可以通过将过滤器包装在CachingFilterWrapper中来缓存它,并在搜索中重用相同的实例 我们遇

我一直在使用Lucene构建POI搜索和地理编码系统。经过测试,我发现当查询长度超过10个术语时。搜索速度太慢,接近1秒。我认为瓶颈在于我使用或生成布尔查询。它将获得大量的候选人文件。而且它也会消耗太多的时间来得分和排名

我改为使用和生成布尔查询。但这会降低命中的准确性。因此,我想找到一个解决方案来减少候选文档,并且在这种情况下不会降低准确性


谢谢你的帮助

如果您可以将查询表示为过滤器,那么可以通过将过滤器包装在CachingFilterWrapper中来缓存它,并在搜索中重用相同的实例


我们遇到的情况是,查询长度为数百个术语,性能从~4秒提高到数百毫秒~10倍。

感谢mindas~缓存和重用这些实例将加快搜索速度。但在研究了api之后,我找到了一个更好的方法,使用BooleanQuerysetMinimumNumberShouldMatch方法来要求候选文档应该匹配的术语数量。最后,搜索服务得到了改进,速度提高了三倍。