Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/08/2013, 01:01
forosanto
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 4 meses
Puntos: 5
Buscador en Django

Muy buenas noches/días, he tenido problemas con un buscador actual que tengo el cual aveces no encuentra lo ingresado si no que se queda buscando y sobre carga el motor de base de datos, el actual código que tengo es este:

Código Python:
Ver original
  1. class EntrySearch(ListView):
  2.     model = Entry
  3.     paginate_by = 15
  4.     template_name = "blog/entry_search.html"
  5.  
  6.     def get_queryset(self):
  7.         qset = super(EntrySearch, self).get_queryset()
  8.         new_data = self.request.GET.copy()
  9.         self.form = EntrySearchForm(new_data)
  10.         if self.form.is_valid():
  11.             stop_words_list = re.compile(STOP_WORDS, re.IGNORECASE)
  12.             search_term = self.form.cleaned_data['q']
  13.             cleaned_search_term = stop_words_list.sub('', search_term)
  14.             terms = [term.strip() for term in cleaned_search_term.split()]
  15.             if terms:
  16.                 q_objects = []
  17.                 for term in terms:
  18.                     q_objects.append(Q(title__icontains=term))
  19.                     q_objects.append(Q(field2__icontains=term))
  20.                     q_objects.append(Q(field3__name__icontains=term))
  21.                     q_objects.append(Q(field4__name__icontains=term))
  22.                     q_objects.append(Q(field5__name__icontains=term))
  23.                     qset = qset.filter(reduce(operator.or_,q_objects)).distinct()
  24.             else:
  25.                 qset = []
  26.         else:
  27.             form = EntrySearchForm()
  28.         return qset

Que opinan que mejoras se podrían implementar.
Gracias.