Python whoosh 如何优化加速
第一次使用 whoosh 数据量 300 万条,索引后 1.5G 文件
根据文档查询,时间经常需要 7 秒以上,问问大神如何加速优化下?感谢
ix = open_dir("indexdir")
with ix.searcher() as searcher:
myquery = Term("subject", "关键词")
results = searcher.search(myquery,limit=10)
for result1 in results:
print(dict(result1))
----------------------- 以下是精选回复-----------------------
答:上 es
答:我是自己写,全部放内存,用 fastapi
答:expiringdict 怎么用,有多快
答:pypy??
whoosh 反正是纯 python 的.
答:2016 那都不维护了,你用它干啥。
答:或许你可以看下 whoosh 的索引数据结构,然后把它改为使用 diskcache 或 redis 做缓存后端。
答:如果你在 Django 下使用 Whoosh,可以试下 Haystack (改起来应该很快),看是不是也这么慢,是否存在不恰当使用的地方。
如果还是很慢,但又不喜欢 ES 太重,可以考虑用 Xapian 做引擎,不过它对中文分词的支持会有点麻烦,知道怎么搞的话麻烦告诉下我。
答:elasticsearch 吧,秒搜,也就 1G 硬盘需求
答:我已经改好出来一个基于 xapian 的搜索引擎,速度确实快很多。
答:时间应该都花在 open_dir 上了吧?把它做成 web 服务常驻内存就好,我现在索引文件大概在 700m 左右,查询时间 0.1s 左右
答:经过初步测试,改用 Xapian 做后端,比用 Whoosh 做后端快 30 到 60 倍。从中也可以看到,尽管 Haystack 框架看起来很重,但其实不是性能瓶颈。
0条评论