gpt4 book ai didi

python - Whoosh - 访问 search_page 结果项抛出 ReaderClosed 异常

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:42 25 4
gpt4 key购买 nike

下面是一个简单的分页功能。

from whoosh import index
def _search(q):
wix = index.open_dir(settings.WHOOSH_INDEX_DIR)
term = Term("title", q) | Term("content", q)
page_id = 1

with wix.searcher() as s:
return s.search_page(term, page_id, pagelen=settings.ITEMS_PER_PAGE)

In [15]: p = _search("like")

In [16]: p.results[0].reader.is_closed
Out[16]: True

如果我尝试访问命中的属性,我会收到 ReaderClosed 异常。

In [19]: p.results
Out[19]: <Top 10 Results for Or([Term('title', 'like'), Term('content', 'like')]) runtime=0.0214910507202>

[21]: p.results[0]["title"]
---------------------------------------------------------------------------
ReaderClosed Traceback (most recent call last)
/usr/local/lib/python2.7/dist-packages/Django-1.5.3-py2.7.egg/django/core/management/commands/shell.p yc in <module>()
----> 1 p.results[0]["title"]

/usr/local/lib/python2.7/dist-packages/whoosh/searching.pyc in __getitem__(self, fieldname)
1500
1501 def __getitem__(self, fieldname):
-> 1502 if fieldname in self.fields():
1503 return self._fields[fieldname]
1504

/usr/local/lib/python2.7/dist-packages/whoosh/searching.pyc in fields(self)
1388
1389 if self._fields is None:
-> 1390 self._fields = self.searcher.stored_fields(self.docnum)
1391 return self._fields
1392

/usr/local/lib/python2.7/dist-packages/whoosh/reading.pyc in stored_fields(self, docnum)
1197 def stored_fields(self, docnum):
1198 segmentnum, segmentdoc = self._segment_and_docnum(docnum)
-> 1199 return self.readers[segmentnum].stored_fields(segmentdoc)
1200
1201 # Per doc methods

/usr/local/lib/python2.7/dist-packages/whoosh/reading.pyc in stored_fields(self, docnum)
693 def stored_fields(self, docnum):
694 if self.is_closed:
--> 695 raise ReaderClosed
696 assert docnum >= 0
697 schema = self.schema

ReaderClosed:

我如何访问命中的属性?

最佳答案

浏览 whoosh 的文档 http://whoosh.readthedocs.org/en/latest/quickstart.html#the-searcher-object我明白了这个问题。把它留在这里以防有人遇到同样的问题。

当“with”范围结束时,任何与搜索相关的文件描述符都会关闭。因此,似乎应该将结果集复制到另一个数据结构中,例如“with” block 中的字典列表,以便在 block 外使用。

关于python - Whoosh - 访问 search_page 结果项抛出 ReaderClosed 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19477319/

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