为什么使用Django haystack切片查询速度太慢?

2024-05-04 02:20:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用whoosh作为搜索后端。在

当我只得到3个搜索结果时,代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
sys.path.append('/home/guomeng/projects/tapplex_ringtones')
import os
os.environ['DJANGO_SETTINGS_MODULE'] = "tapplex_ringtones.settings"

from haystack.query import SearchQuerySet
from ringtones.models import Ringtone
import time

query_word = u'sky'
t0 = time.time()
sqs = SearchQuerySet().models(Ringtone).filter(content=query_word)[:3]
t1 = time.time()
print sqs
print t1 - t0

结果是:

[<SearchResult: ringtones.ringtone (pk=u'1730')>, <SearchResult: ringtones.ringtone (pk=u'28959')>, <SearchResult: ringtones.ringtone (pk=u'25889')>]
0.422543048859> 0.422543048859

当我得到所有搜索结果时,代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
sys.path.append('/home/guomeng/projects/tapplex_ringtones')
import os
os.environ['DJANGO_SETTINGS_MODULE'] = "tapplex_ringtones.settings"

from haystack.query import SearchQuerySet
from ringtones.models import Ringtone
import time

query_word = u'sky'
t0 = time.time()
sqs = SearchQuerySet().models(Ringtone).filter(content=query_word)
t1 = time.time()
print sqs
print t1 - t0

结果是:

^{pr2}$

为什么我得到的结果都很快?在


Tags: fromimporttimeosmodelssysqueryword
1条回答
网友
1楼 · 发布于 2024-05-04 02:20:43

可能是因为:

SearchQuerySet().models(Ringtone).filter(content=query_word)[:3]

做任何事

^{pr2}$

使用limit子句更新查询集并返回新的queryset。这可以解释时间差的全部或部分原因。为了得到有意义的结果,你需要平均花费在许多调用上的时间,并分析一些内部代码——例如,数据库处理查询需要多长时间,查询实际上是什么等等

相关问题 更多 >