【发布时间】:2010-03-10 23:47:57
【问题描述】:
我目前正在为某些设计构建一个简单的搜索方法。该查询同时搜索作者姓名和设计文本。问题:当数据库有 300,000 个设计并且我想对结果进行分页时会发生什么?如果我传递一个page 变量,那么每次用户切换到不同的页面时,都会再次执行查询。
解决此问题的最佳方法是什么?它是否正确缓存尽可能多的搜索?是否在会话数据中存储了一定数量?
"""
Searches by screenname or design text
"""
def search_designs(request):
designs = None
words = None
if request.method == 'POST':
q = request.POST['search']
words = q.split()
# Get all approved designs
designs = Design.objects.filter(status=2)
for w in words:
designs = designs.filter(name__icontains=w) | designs.filter(author__profile__screenname__icontains=w)
vars = RequestContext(request,
{
'results' : designs,
'words' : words,
})
return render_to_response("search_test.html", vars)
【问题讨论】: