gpt4 book ai didi

python - 解决 Whoosh 索引错误 : Writer is closed

转载 作者:行者123 更新时间:2023-12-01 03:01:38 24 4
gpt4 key购买 nike

python whoosh IndexingError when interrupted 不同,我没有中断任何提交,但创建新索引时发生 IndexingError:

import uuid
import os

from whoosh.index import create_in
from whoosh.fields import *
from whoosh.qparser import QueryParser

schema = Schema(hashID=TEXT(stored=True))
indexdir = 'foobar'
if not os.path.exists(indexdir):
os.mkdir(indexdir)

ix = create_in(indexdir, schema)

with ix.writer() as writer:
writer.add_document(hashID=str(uuid.uuid4()))
writer.commit()

错误:

---------------------------------------------------------------------------
IndexingError Traceback (most recent call last)
<ipython-input-1-85a42bebdce8> in <module>()
15 with ix.writer() as writer:
16 writer.add_document(hashID=str(uuid.uuid4()))
---> 17 writer.commit()

/usr/local/lib/python3.5/site-packages/whoosh/writing.py in __exit__(self, exc_type, exc_val, exc_tb)
208 self.cancel()
209 else:
--> 210 self.commit()
211
212 def group(self):

/usr/local/lib/python3.5/site-packages/whoosh/writing.py in commit(self, mergetype, optimize, merge)
918 """
919
--> 920 self._check_state()
921 # Merge old segments if necessary
922 finalsegments = self._merge_segments(mergetype, optimize, merge)

/usr/local/lib/python3.5/site-packages/whoosh/writing.py in _check_state(self)
553 def _check_state(self):
554 if self.is_closed:
--> 555 raise IndexingError("This writer is closed")
556
557 def _setup_doc_offsets(self):

IndexingError: This writer is closed

作者应该在上下文范围内,所以我不确定为什么它是新创建的,但它被关闭了。 如何解决新索引上的 IndexingError?

最佳答案

writer.commit() 保存更改并关闭 writer。

然后在语句末尾,with ix.writer() as writer:尝试关闭已经关闭且不存在的编写器。

因此,您的 with 语句相当于:

try:
writer = ix.writer()
writer.add_document(hashID=str(uuid.uuid4()))
writer.commit()
finally:
writer.commit()

作为解决方案,无论您在 with 语句中省略 writer.commit() 还是删除 with 语句并重新创建 writer 每次你想提交时。

关于python - 解决 Whoosh 索引错误 : Writer is closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43773095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com