Foros del Web » Programando para Internet » Python »

Buscador en Django

Estas en el tema de Buscador en Django en el foro de Python en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 14/08/2013, 01:01
 
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.
  #2 (permalink)  
Antiguo 26/08/2013, 16:14
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Buscador en Django

Podrías ver por que no te funciona debuggeando el SQL, puedes hacerlo a mano o con django-debugtoolbar.

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 26/08/2013, 18:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Buscador en Django

Es porque

Código Python:
Ver original
  1. qset = qset.filter(reduce(operator.or_,q_objects)).distinct()

Esta dentro del for.

Etiquetas: buscador, django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:57.