我使用Django == 1.11.8,django-haystack == 2.7.0,pysolr == 3.7.0和Solr == 6.6.3和Python3
这是一个名为MainData
的模型,我希望从中显示搜索结果。
from django.db.models import *
from django.db import models as models
class MainData(models.Model):
created = models.DateTimeField(auto_now_add=True, editable=False)
last_updated = models.DateTimeField(auto_now=True, editable=False)
url = models.CharField(max_length=1000)
title = models.CharField(max_length=250, blank=True, null=True)
metadata = models.TextField(max_length=500, blank=True, null=True)
meta_keywords = models.TextField(max_length=1000, blank=True, null=True)
context = models.TextField(max_length=1000, blank=True, null=True)
class Meta:
ordering = ('-created',)
def __str__(self):
return str(self.title)
def get_absolute_url(self):
return self.url
我的search_index.py
文件:
import datetime
from haystack import indexes
from .models import MainData
class MainSearchIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
url = indexes.CharField(model_attr='url', null=True)
title = indexes.EdgeNgramField(model_attr='title', null=True)
metadata = indexes.EdgeNgramField(model_attr='metadata', null=True)
meta_keywords = indexes.CharField(model_attr='meta_keywords', null=True)
context = indexes.EdgeNgramField(model_attr='context', null=True)
suggestions = indexes.FacetCharField()
def get_model(self):
return MainData
def index_queryset(self, using=None):
return MainData.objects.filter(created__lte=datetime.datetime.now())
def prepare(self, obj):
prepared_data = super(MainSearchIndex, self).prepare(obj)
prepared_data['suggestions'] = prepared_data['text']
return prepared_data
现在,我的问题是,当用户开始输入内容时,如何实现Google等自动建议功能。我还想实现拼写检查功能。
请帮帮我。
谢谢。
答案 0 :(得分:0)
在haystack django文档中有一些关于自动完成的好信息。
https://django-haystack.readthedocs.io/en/v2.7.0/autocomplete.html