2

我使用 Apache Solr 已经有一段时间了,直到最近才开始遇到一些严重的问题。我将它与 haystack 和 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 问题,包括:

XML 错误对象没有属性“cssselect”

4

3 回答 3

4

似乎问题出在pysolr上。您可能会在这里找到一些帮助。

于 2013-08-26T21:00:17.457 回答
1

即使将 pysolr 和 lxml 升级到最新版本,我仍然遇到同样的问题。原来这是因为我没有使用 haystack 生成的模式,与默认的 solr 相比,它有一些额外的字段。

您可以通过查看您的 solr 日志来确认是否是这种情况。

于 2014-11-13T00:37:13.447 回答
1

这是 pysolr 的问题。直到 3.3.0 才修复。

唯一的替代方法是覆盖 pysolr 代码并针对 Solr 返回响应状态的时间进行调整!=200。

您可以检查响应是否具有正文属性并根据该属性进行调整。

于 2015-02-11T06:57:44.343 回答