/ / Solr problemy z wyszukiwaniem - django, solr, django-haystack

Problemy Solr z wyszukiwaniem - django, solr, django-haystack

Używałem Apache Solr od jakiegoś czasu i dopiero niedawno zacząłem mieć z nim poważne problemy. Używam go ze stogiem siana i projektem django. Kiedy to robię manage.py shell otrzymuję poniższe:

>>> 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"

Próbowałem ponownie zainstalować haystack, lxml, cssselect, pysolr i nadal otrzymuję te błędy. Czy jest coś jeszcze, co mogę spróbować? Dziękujemy za wszelką pomoc!

Próbowałem też przeczytać kilka innych pytań SO, w tym to:

Obiekt błędu XML nie ma atrybutu „cssselect”

Odpowiedzi:

4 dla odpowiedzi № 1

Wygląda na to, że problem dotyczy pysolru. Możesz znaleźć pomoc tutaj.


1 dla odpowiedzi nr 2

Miałem ten sam problem, nawet po przyniesieniuup pysolr i lxml do najnowszej wersji. Okazało się, że to dlatego, że nie korzystałem ze schematu generowanego przez stóg siana, który ma kilka dodatkowych pól w porównaniu z domyślnym schematem solr.

Możesz potwierdzić, czy tak jest, przeglądając dzienniki SOLR.


1 dla odpowiedzi nr 3

Jest to problem z pysolrem. Nie został naprawiony do wersji 3.3.0.

Jedyną alternatywą byłoby nadpisanie kodu pysolr i wprowadzenie poprawek, kiedy Solr zwróci status odpowiedzi! = 200.

Możesz sprawdzić, czy odpowiedź ma atrybut body, czy nie i dokonać odpowiednich zmian.