Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

139
Vistas
La consulta Django Trigram Similarity no es tan rápida como la consulta sin procesar con el mismo resultado

El objetivo es tener una búsqueda rápida de valores similares, en orden de similitud.

Esta es la consulta en Django: Model.objects.annotate(similarity=TrigramSimilarity('field_name', query)).filter(similarity__gt=0.3).order_by('-similarity').values('field_name')[0:30]

Lo anterior se convierte en esta consulta: SELECT "table"."field_name" FROM "table" WHERE SIMILARITY("table"."field_name", query_value) > 0.3 ORDER BY SIMILARITY("table"."field_name", query_value) DESC LIMIT 30

Eso toma alrededor de 1.3 segundos, pero si ejecuto esto en psql:

SELECT field_name FROM table WHERE field_name % 'query_value' ORDER BY similarity(field_name, 'query_value') DESC LIMIT 30

Es mucho más rápido y tiene la misma salida correcta. ¿Cómo puedo lograr esto con Django, además de poner el comando raw sql?

Otra pregunta es cómo agregar SELECT DISTINCT field_name a eso. Actualmente, cuando intento agregarlo, ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list , aunque solo uso el nombre_del_campo seleccionado en la función de similitud ORDENAR POR.

¡Muchas gracias!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Una pregunta un poco antigua, pero últimamente me estaba equivocando con los trigramas y me encontré con un problema similar.

Lo muy importante es (como se menciona aquí: https://dba.stackexchange.com/questions/103821/best-index-for-similarity-function/103823#103823 ) ¡los índices no se usan cuando usa funciones! Tienes que usar operator-so % .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda