Django Haystack:在SearchQuerySet结果上循环非常慢

时间:2019-04-12 13:42:59

标签: django django-haystack

我将Django 2.1 / Python 3.6和Django Haystack / Whoosh用作大约25k对象数据库的搜索引擎。我想用搜索结果构建一个表(DataTable)。

但是,遍历SearchQuerySet结果比遍历干草堆默认表单/视图给出的page.object_list慢7倍。

我的搜索索引:

class MyModelIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        return MyModel

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

我的比较如下:

测试A:我使用默认的Haystack表单/视图搜索kerword。只需不到一秒钟的时间,即可返回81个结果,所有结果都在同一页面(HAYSTACK_SEARCH_RESULTS_PER_PAGE = 100)中。

测试B:我用自己的代码进行查询,然后将其转换为列表,以便可以发送此列表来构建数据表:

from haystack.query import SearchQuerySet
results = list(SearchQuerySet().models(MyModel).filter(text='keyword')) 

这需要7秒才能返回相同的81个结果。

我试图找出干草堆如何构建其page.object_list,但是我没有成功。我想知道我在做什么错。

谢谢。

0 个答案:

没有答案