使用Whoosh和Django Haystack时出现ValueError

1 投票
1 回答
531 浏览
提问于 2025-04-16 06:40

我正在尝试用Whoosh设置Haystack,但在运行SearchQuerySet对象的count方法时,出现了这个错误:“ValueError: dictionary update sequence element #0 has length 9; 2 is required”。这个错误的意思是说,程序在处理一个字典时,遇到了一个长度不对的元素,应该是2个值,但它找到了9个。

>>> sqs.count()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/haystack/query.py", line 375, in count
    return len(clone)
  File "/usr/local/lib/python2.6/dist-packages/haystack/query.py", line 48, in __len__
    self._result_count = self.query.get_count()
  File "/usr/local/lib/python2.6/dist-packages/haystack/backends/__init__.py", line 399, in get_count
    self.run()
  File "/usr/local/lib/python2.6/dist-packages/haystack/backends/__init__.py", line 354, in run
    results = self.backend.search(final_query, **kwargs)
  File "/usr/local/lib/python2.6/dist-packages/haystack/backends/__init__.py", line 47, in wrapper
    return func(obj, query_string, *args, **kwargs)
  File "/usr/local/lib/python2.6/dist-packages/haystack/backends/whoosh_backend.py", line 313, in search
    return self._process_results(raw_results, start_offset, end_offset, highlight=highlight, query_string=query_string, spelling_query=spelling_query)
  File "/usr/local/lib/python2.6/dist-packages/haystack/backends/whoosh_backend.py", line 350, in _process_results
    raw_result = dict(raw_result)
ValueError: dictionary update sequence element #0 has length 9; 2 is required

1 个回答

2

我在这里找到了我的答案 https://github.com/toastdriven/django-haystack/issues/closed#issue/281,结果发现是版本的问题。

如果我使用这些特定版本的Haystack和Whoosh,就可以正常工作。

pip install django-haystack==1.0.1-final

easy_install "Whoosh==1.0.0.b11"

撰写回答