0
好了,所以我想實現使用草垛和Solr在我的Django項目搜索欄自動完成,但我一直運行到「空序列()減少沒有初始值」的錯誤。我不確定當我重建我的索引時,這可能是怎麼回事,我發現它在我的數據庫中索引了200多個三元組。草垛自動完成募集奇錯誤
我不確定我是否正確理解了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值()。自動完成() – user6731765
哦,我想我明白我在做什麼錯。我將它傳遞給search_query,而不是我想用於自動完成的術語查詢集。現在我正在嘗試這兩條線。內容提示= Triple.objects.all()SQS = SearchQuerySet()。自動完成(content_auto = '內容提示') – jdv12