pip install django-haystack python INSTALLED_APPS = [ ... 'haystack', ... ] HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.elasticsearch5_backend.Elasticsearch5SearchEngine', 'URL': 'http://localhost:9200/', 'INDEX_NAME': 'my_index', }, } python from haystack import indexes from .models import MyModel class MyModelIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) title = indexes.CharField(model_attr='title') content = indexes.CharField(model_attr='content') def get_model(self): return MyModel def index_queryset(self, using=None): return self.get_model().objects.all() def search(self, query=None, sort_by=None, **kwargs): queryset = super(MyModelIndex, self).search(query, **kwargs) if sort_by == 'title': queryset = queryset.order_by('title') elif sort_by == 'content': queryset = queryset.order_by('content') return queryset python from haystack.query import SearchQuerySet def search_view(request): query = request.GET.get('q', '') sort_by = request.GET.get('sort_by', None) search_results = SearchQuerySet().models(MyModel).filter(content=query).order_by('-pub_date') if sort_by: search_results = search_results.load_all().auto_query(query).models(MyModel).filter(content=query).order_by() return render(request, 'search_results.html', {'results': search_results})


上一篇:
下一篇:
切换中文