我使用Apache Solr已经有一段时间了,直到最近才开始遇到一些严重的问题。我在干草堆和django项目中使用它。当我从manage.py shell
开始,我得到以下内容:
>>> from haystack.query import SearchQuerySet
>>> emps = SearchQuerySet().filter(django_ct='web.employer').filter(name__icontains='Mi')[:10]
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/haystack/query.py", line 241, in __getitem__
self._fill_cache(start, bound)
File "/usr/local/lib/python2.7/dist-packages/haystack/query.py", line 140, in _fill_cache
results = self.query.get_results(**kwargs)
File "/usr/local/lib/python2.7/dist-packages/haystack/backends/__init__.py", line 469, in get_results
self.run(**kwargs)
File "/usr/local/lib/python2.7/dist-packages/haystack/backends/solr_backend.py", line 501, in run
results = self.backend.search(final_query, **search_kwargs)
File "/usr/local/lib/python2.7/dist-packages/haystack/backends/__init__.py", line 47, in wrapper
return func(obj, query_string, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/haystack/backends/solr_backend.py", line 202, in search
raw_results = self.conn.search(query_string, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/pysolr.py", line 578, in search
response = self._select(params)
File "/usr/local/lib/python2.7/dist-packages/pysolr.py", line 308, in _select
return self._send_request('get', path)
File "/usr/local/lib/python2.7/dist-packages/pysolr.py", line 293, in _send_request
error_message = self._extract_error(resp)
File "/usr/local/lib/python2.7/dist-packages/pysolr.py", line 372, in _extract_error
reason, full_html = self._scrape_response(resp.headers, resp.content)
File "/usr/local/lib/python2.7/dist-packages/pysolr.py", line 404, in _scrape_response
p_nodes = body_node.cssselect('p')
AttributeError: 'NoneType' object has no attribute 'cssselect'
我尝试重新安装haystack,lxml,cssselect,pysolr,但我仍然遇到这些错误。还有什么我可以尝试的吗?谢谢你的帮助!
我也尝试过阅读其他一些SO问题,包括:
答案 0 :(得分:4)
似乎问题与pysolr有关。您可能会找到一些帮助here。
答案 1 :(得分:1)
即使在将pysolr和lxml引入最新版本之后,我也遇到了同样的问题。 原来是因为我没有使用haystack生成的模式,与默认的solr相比,它有一些额外的字段。
您可以通过查看您的solr日志来确认是否是这种情况。
答案 2 :(得分:1)
这是pysolr的一个问题。它一直没有固定到3.3.0。
唯一的替代方法是覆盖pysolr代码并对Solr何时返回响应状态进行调整!= 200。
您可以检查响应是否具有body属性,并根据该属性进行调整。