Хорошо, поэтому я пытаюсь реализовать автозаполнение в поле поиска с помощью haystack и solr в моем проекте django, но я продолжаю работать в 'reduce() пустой последовательности без ошибки начального значения. Я не уверен, как это может быть из-за того, что когда я перестраиваю свой индекс, я вижу, что он индексирует более 200 троек в моей БД.haystack autocomplete повышение нечетной ошибки
Я не уверен, что правильно понимаю модуль SQS, и я надеялся, что кто-то может указать мне в правильном направлении.
Я хочу использовать поля Тройной модели в качестве предложений автозаполнения при поиске.
моя модель, индекс и вид:
MODEL:
# Create your models here.
class Triple(models.Model):
studies = models.ForeignKey(Studies, on_delete=models.CASCADE)
Subject = models.CharField(max_length=550, default='')
Predicate = models.CharField(max_length=550, default='')
Object = models.CharField(max_length=550, default='')
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
def __unicode__(self):
return '%s %s %s' % (self.Subject, self.Predicate, self.Object)
def __str__(self):
return '%s %s %s' % (self.Subject, self.Predicate, self.Object)
def get_absolute_url(self):
return reverse("queries:detail", kwargs={"id": self.id})
INDEX:
class TripleIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
link = indexes.CharField(model_attr='studies')
content_auto = indexes.EdgeNgramField(model_attr='Object')
def get_model(self):
return Triple
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all()
проблема, на мой взгляд, кажется, проистекают из этой линии:
sqs = SearchQuerySet().autocomplete(content_auto=request.GET.get('q', ''))[:5]
Я не уверен, что вы подразумеваете под входами в автозаполнение. Вы говорите об индексе EdgeNgramField? – jdv12
Я просто имел в виду значение complete_auto, которое вы передали в SearchQuerySet(). Autocomplete() – user6731765
О, я думаю, я вижу, что я делаю неправильно. Я передаю ему search_query, а не термин query set, который я хочу использовать для автозаполнения. Теперь я пробую эти две строки. autocontent = Triple.objects.all() sqs = SearchQuerySet(). autocomplete (content_auto = 'autocontent') – jdv12