字段缓存

缺省值(默认值) filedb )后端使用 field caches 在某些情况下。字段缓存基本上预先计算索引中文档的顺序,以加快排序和分面。

在第一次对大索引进行排序/创建方面时,生成字段缓存可能需要一些时间。字段缓存保存在内存中(默认情况下在生成时写入磁盘),因此后续的排序/分面搜索应该更快。

默认的缓存策略永远不会过期字段缓存,因此重用的搜索者和/或对许多不同的字段进行排序可能会占用大量索引的内存。

自定义缓存行为

(以下API示例引用默认值 filedb 后端)

默认情况下, whoosh将字段缓存保存到磁盘。要防止读卡器或搜索器写出字段缓存,请在开始使用它之前执行此操作:

searcher.set_caching_policy(save=False)

默认情况下,如果将缓存写入磁盘,则它们将保存在索引目录中。要让读卡器或搜索者将缓存文件保存到其他位置,请创建一个存储对象并将其传递给 storage 关键字参数:

from whoosh.filedb.filestore import FileStorage

mystorage = FileStorage("path/to/cachedir")
reader.set_caching_policy(storage=mystorage)

创建自定义缓存策略

想要实现自定义缓存策略(例如,添加缓存过期)的专家用户应该子类 whoosh.filedb.fieldcache.FieldCachingPolicy . 然后,可以将策略对象的实例传递给 set_caching_policy 方法:

searcher.set_caching_policy(MyPolicy())