Solr问题与搜索

时间:2013-08-09 18:48:09

标签: django solr django-haystack

我使用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问题,包括:

XML error object has no attribute 'cssselect'

3 个答案:

答案 0 :(得分:4)

似乎问题与pysolr有关。您可能会找到一些帮助here

答案 1 :(得分:1)

即使在将pysolr和lxml引入最新版本之后,我也遇到了同样的问题。 原来是因为我没有使用haystack生成的模式,与默认的solr相比,它有一些额外的字段。

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

答案 2 :(得分:1)

这是pysolr的一个问题。它一直没有固定到3.3.0。

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

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