Django Haystack SearchQuerySet не возвращает ничего с использованием solr - PullRequest
0 голосов
/ 25 мая 2020

Я использую Django haystack для своего блога с solr в качестве моей поисковой системы. Я также правильно настроил свой solr (версия 6.6.6), и все запросы отображаются на веб-сайте solr. Но когда я использую SearchQuerySet, он ничего не возвращает по запросу. Я добавил код ниже.

views.py

from django.shortcuts import render, redirect
from django.urls import reverse_lazy
from django.views import generic
from blog.views import Post
from django.views.generic.base import TemplateView
from haystack.query import SearchQuerySet
import logging
logger = logging.getLogger(__name__)

    class Search(TemplateView):
        template_name = 'blog/post_search.html'

        def get(self, request, **kwargs):
            query = request.GET.get('query', '')
            results = SearchQuerySet().models(Post).filter(content='query').load_all()
            total = results.count()
            return render(request, self.template_name, {'results':results, 'total':total})

search_indexes.py

from haystack import indexes
from blog.models import Post

class PostIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    publish = indexes.DateTimeField(model_attr='publish_date')
    def get_model(self):
        return Post
    def index_queryset(self, using=None):
        return self.get_model().objects.published()

settings.py

"""
Django settings for radd project.

Generated by 'django-admin startproject' using Django 3.0.5.

For more information on this file, see
https://docs.djangoproject.com/en/3.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.0/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/

SITE_ID = 1

ALLOWED_HOSTS = ['www.rad.com', '127.0.0.1', 'rad.com', 'localhost', '192.168.43.195']



# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django_comments',
    'django_comments_xtd',
    'rest_framework',

    'blog',
    'mptt',
    'haystack',
    # third party apps
    'crispy_forms',
]

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

HAYSTACK_CONNECTIONS = {
        'default': {
            'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
            'URL': 'http://127.0.0.1:8983/solr/blog',
            'ADMIN_URL': 'http://127.0.0.1:8983/solr/admin/cores',
    },
}

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
...