Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

140
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda