2017-02-21 22 views
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] 

回答

0

哪些輸入autocomplete,讓你這個錯誤?

我想潛在地傳遞一個空字符串可能會觸發錯誤。

+0

我不確定輸入自動完成的含義。你在談論EdgeNgramField的索引嗎? – jdv12

+0

我剛纔只是說complete_auto,你傳遞到SearchQuerySet值()。自動完成() – user6731765

+0

哦,我想我明白我在做什麼錯。我將它傳遞給search_query,而不是我想用於自動完成的術語查詢集。現在我正在嘗試這兩條線。內容提示= Triple.objects.all()SQS = SearchQuerySet()。自動完成(content_auto = '內容提示') – jdv12