我一直在使用Lucene建立一个POI搜索&地理编码系统。经过测试,我发现查询时很长(超过10个术语)。并且搜索速度在1s附近太慢。我认为瓶颈是我用OR来生成我的BooleanQuery。它会获得大量的候选文件。而且它也会消耗太多时间来得分和排名。
我改为使用AND来生成我的BooleanQuery。但它降低了命中的准确性。所以我想找到一个减少候选文件的解决方案,而不是在这种情况下降低准确性。
感谢您的帮助!
答案 0 :(得分:0)
如果您可以将查询表达为过滤器,则可以将其缓存(通过将过滤器包装在CachingFilterWrapper
中)并在搜索中重复使用相同的实例。
我们有一个案例,查询长度是几百个术语,性能从大约4秒到几百毫秒(大约快10倍)。