2013-12-18 87 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的其他答案的更改。