我将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
,但是我没有成功。我想知道我在做什么错。
谢谢。