0
下面是例子中,我尝试为大集合与最终嗖Python的嗖的BufferedWriter不提交到磁盘
schema = Schema(name=TEXT(stored=True), m=ID(stored=True), content=KEYWORD(stored=True))
ix = create_in("indexdir", schema)
from whoosh.writing import BufferedWriter
from multiprocessing import Pool
jobs = []
writer = BufferedWriter(ix, period=15, limit=512, writerargs = {"limitmb": 512})
for item in cursor:
if len(jobs) < 1024:
jobs.append(item)
else:
p = Pool(8)
p.map(create_barrel, jobs)
p.close()
p.join()
jobs = []
writer.commit()
create_barrel功能执行以下操作:
writer.add_document(name = name, m = item['_id'], content = " ".join(some_processed_data))
还在运行几个小时后,索引是空的,并且indexdir中唯一的文件是锁定文件_MAIN_0.toc
上面的代码适用于切换无AsyncWriter但s ome的原因AsyncWriter错过了大约90%的提交和标准作家对我来说太慢了。
为什么BufferedWriter未能提交?
我只试过2.4.1。它由pip安装。我应该尝试哪个其他分支?另外,你对代码中的其他问题还是正确的,但我拥有3.5百万个项目,并不在意它们中的一些是否会丢失。 – Moonwalker 2013-04-12 10:32:30