2013-12-18 126 views
1

我遇到了索引過程無法正常工作的問題。我有一個名爲Article的模型,在db中,我在Article表中有943條記錄。對於本地測試,我有一個包含12篇文章的sqlite數據庫,並且rebuild_index和update_index正常運行。然而,當我上傳到我們的Web服務器我得到rebuild_index或update_index以下的輸出:Rebuild_index和update_index死亡

>python manage.py update_index 
>Indexing 943 articles 
>Killed 

我看着這個答案Django Haystack/ElasticSearch indexing process aborted,但我想,以避免改變草堆源代碼,如果我能幫助它。有沒有其他人遇到過這個問題?另外,我將whoosh用作後端。謝謝!

這裏的模型類:

class Article(models.Model): 
    title = models.CharField(max_length=100) 
    authors = models.ManyToManyField(User) 
    abstract = models.CharField(max_length=500, blank=True) 
    full_text = models.TextField(blank=True) 
    proquest_link = models.CharField(max_length=200, blank=True, null=True) 
    ebsco_link = models.CharField(max_length=200, blank=True, null=True) 

def __unicode__(self): 
    return self.title 

這裏的指數類:

class ArticleIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.NgramField(document=True, use_template=True) 
    title = indexes.NgramField(model_attr='title') 

    #We'll see how this goes 
    authors = indexes.NgramField(model_attr='authors') 
    abstract = indexes.NgramField(model_attr='abstract') 
    proquest_link = indexes.NgramField(model_attr='proquest_link') 
    ebsco_link = indexes.NgramField(model_attr='ebsco_link') 



def get_model(self): 
    return Article 

def index_queryset(self, using=None): 
    return self.get_model().objects.all() 
+2

你的服務器有多少內存?這聽起來像是空間不足了?您爲模型編制了哪些信息? –

+0

594M。我們正在AWS EC2實例上運行。是的,這似乎是,不知道如何解決它。我會更新這個問題並向您展示模型和索引類 – AndrewSmiley

+0

我不得不使用'solango'(這是乾草堆的先驅),並且因爲位於Solr頂部的python/django索引器正在讀取內存問題整個數據集在迭代之前,所以它可能與此有關,儘管我不確定乾草堆是否適用於這些問題 –

回答

1

我打開一個新的終端窗口,頂部連。原來索引過程使用了cpu的99.9%,這就是它失敗的原因。內存使用情況實際上並沒有那麼糟糕。所以這不是代碼,而是服務器,因爲它是一個ec2微型實例,在cpu中非常有限。再次感謝Timmy O'Mahony指引我朝着正確的方向前進。

0

我所做的就是在我的項目​​上創建我自己的命令,它是原始命令的副本以及有關pks_seen的其他答案的更改。