首页 > 解决方案 > 没有搜索结果 Django 2.1 Solr 6.5

问题描述

我用 haystack 2.5 为 django 2.1 实现了 solr 6.5,我成功地建立了索引,但仍然没有搜索结果

q*:* 返回

    {
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"*:*",
      "indent":"on",
      "wt":"json",
      "_":"1543140724323"}},
  "response":{"numFound":5,"start":0,"docs":[
      {
        "id":"blog.post.1",
        "django_ct":["blog.post"],
        "publish":["2019-05-26T04:46:00+00:00Z"],
        "text":["Chwalmy wodza\nsanacja, wódz, historia, sumienie\nBo jeden jest wódz\n\n"],
        "django_id":[1],
        "_version_":1618099571920994304},
      {
        "id":"blog.post.3",
        "django_ct":["blog.post"],
        "publish":["2018-11-15T20:59:39+00:00Z"],
        "text":["Trwoga Krzyk Gardłowy\nwódz\nsome\n\n"],
        "django_id":[3],
        "_version_":1618099571923091456},
      {
        "id":"blog.post.4",
        "django_ct":["blog.post"],
        "publish":["2018-11-15T21:24:01+00:00Z"],
        "text":["Jeszcze jeden post\nsanacja, wódz\nChwalmy wodza\n\n"],
        "django_id":[4],
        "_version_":1618099571924140032},
      {
        "id":"blog.post.5",
        "django_ct":["blog.post"],
        "publish":["2018-11-21T14:41:25+00:00Z"],
        "text":["Yep\nsanacja, wódz\nffff\n\n"],
        "django_id":[5],
        "_version_":1618099571925188608},
      {
        "id":"blog.post.7",
        "django_ct":["blog.post"],
        "publish":["2018-11-21T21:30:30+00:00Z"],
        "text":["Markdown\nhistoria, sanacja, wódz\n*wyróżnienie* **pogrubienie**\nlistę:\n\n\n\n\nSometimes you want bullet points:\n\n* Start a line with a star\n* Profit!\n* Start a line with a star\n* Else\n\nTutaj jest [sabaton](https://www.youtube.com/watch?v=_HLNMfCBUb0)\n\n"],
        "django_id":[7],
        "_version_":1618099571925188609}]

所以核心被填充

我的观点:

def post_search(request):
    form = SearchForm()
    if 'query' in request.GET:
        form = SearchForm(request.GET)
        if form.is_valid():
            cd = form.cleaned_data
            results = SearchQuerySet().models(Post)\
                                      .filter(content=cd['query']).load_all()
            # Obliczenie całkowitej liczby wyników.
            total_results = results.count()
            return render(request,
                          'blog/post/search.html',
                          {'form': form,
                          'cd': cd,
                          'results': results,
                          'total_results': total_results})
    else:
        return render(request,
                      'blog/post/search.html',
                      {'form': form})

还有我的表格

class SearchForm(forms.Form):
    query = forms.CharField()

我尝试了 haystack 本身提出的程序

>>> from haystack.query import SearchQuerySet
>>> sqs = SearchQuerySet().all()
>>> sqs.count()

但我只收到

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/hesmeron/first_env/lib/python3.5/site-packages/haystack/query.py", line 522, in count
    return len(self)
  File "/home/hesmeron/first_env/lib/python3.5/site-packages/haystack/query.py", line 86, in __len__
    self._result_count = self.query.get_count()
  File "/home/hesmeron/first_env/lib/python3.5/site-packages/haystack/backends/__init__.py", line 619, in get_count
    self.run()
  File "/home/hesmeron/first_env/lib/python3.5/site-packages/haystack/backends/solr_backend.py", line 802, in run
    results = self.backend.search(final_query, **search_kwargs)
  File "/home/hesmeron/first_env/lib/python3.5/site-packages/haystack/backends/__init__.py", line 33, in wrapper
    return func(obj, query_string, *args, **kwargs)
  File "/home/hesmeron/first_env/lib/python3.5/site-packages/haystack/backends/solr_backend.py", line 149, in search
    distance_point=kwargs.get('distance_point'))
  File "/home/hesmeron/first_env/lib/python3.5/site-packages/haystack/backends/solr_backend.py", line 425, in _process_results
    app_label, model_name = raw_result[DJANGO_CT].split('.')
AttributeError: 'list' object has no attribute 'split'

所以这就是问题所在,帖子被编入索引但无法搜索,此时我真的没有想法了

标签: djangosolr

解决方案


推荐阅读