Интернет магазин с 6 млн позиций, будет в районе 10 млн, уже испытываю огромные проблемы с производительностью поиска. Прямое вхождение еще как-то работает, если это можно назвать работой (13 секунд с нажатия кнопки поиска до загрузки страницы), поиск похожих соответствий вообще не работает, обваливается с ошибкой 502
Попробовал поставить elasticsearch, но не могу проиндексировать товары, у меня 4гб оперативы на сервере, при индексации сервер убивает процесс из-за нехватки памяти (команда manage.py search_index --rebuild). Как быть? =(
def search(request):
if request.method == 'GET':
form = SearchForm(request.GET)
if form.is_valid():
name_rus = form.cleaned_data['search']
try:
product = Product.objects.get(Q(name_rus__iexact=name_rus)|Q(sku=name_rus))
return redirect('product_item', product.slug)
except:
products_search = Product.objects.annotate(search=SearchVector('name_rus', 'name_poland')).filter(search=name_rus)
last_question = '?search=%s' % name_rus
categories = Category.objects.filter(categories_products__in=products_search).distinct()
paginator = Paginator(products_search, 40) # Show 25 contacts per page
page = request.GET.get('page')
products = paginator.get_page(page)
return render(request, 'core/search.html', {'products':products, 'categories':categories, 'page':page, 'last_question':last_question})
else: return HttpResponse('Ошибка поиска')
def typeahead(request):
q = request.GET.get('q', '')
prodlist = []
objects = Product.objects.filter(Q(name_rus__icontains=q)|Q(sku=q))[0:10]
for i in objects:
new = {'q':i.name_rus}
prodlist.append(new)
return HttpResponse(json.dumps(prodlist), content_type="aplication/json")