2017-09-16 1 views
0

Ich versuche, ein Suchsystem in meinem Django und Postgresql-Projekt zu erstellen, aber ich laufe immer auf einen Fehler, wenn ich versuche, eine Abfrage zu machen.Django/Postgres - Keine Funktion entspricht dem angegebenen Namen und Argumenttypen

Immer, wenn ich diese Befehle in der Shell versuchen:

vector = SearchVector('title','tags') 
query = SearchQuery('book') | SearchQuery('harry') 

My_Library.objects.annotate(similarity=TrigramSimilarity(vector,test),).filter(similarity__gt=0.3).order_by('-similarity') 

erhalte ich die Fehlermeldung: „Keine Funktion entspricht den angegebenen Namen und Argumenttypen Sie können explizite Typ wirft hinzufügen müssen.“

Ich habe eine Zeit lang andere Optionen getestet, und der einzige Weg, ich erfolgreich eine Suchabfrage ohne einen Fehler ist die Verwendung von zwei Strings an der Stelle der Abfrage und Vektor passieren kann.

My_Library.objects.annotate(similarity=TrigramSimilarity('title','my search query'),).filter(similarity__gt=0.3).order_by('-similarity') 

Dies wird erfolgreich meine Suche ohne Fehler übergeben.

Warum erhalte ich diesen Fehler und wie kann ich ihn beheben?

Ich habe meinen Code wurde stütze diese Full Text Search Dokumentation aus

Antwort

0

TrigramSimilarity dauert 2 strings als Argument

Sie versuchen, es passieren ein SearchVector und SearchQuery. , die nicht

Wenn Sie durch mehrere Tags suchen möchten arbeiten, müssen Sie wahrscheinlich mit einem | und dann sortieren auf Ähnlichkeit, so etwas wie mehrere der Ähnlichkeits Abfragen aggregieren:

from django.db.models import Q 

My_Library.objects.annotate(
    Q(similarity=TrigramSimilarity('title','my search query'),)) | 
    Q(similarity=TrigramSimilarity('title','my search query'),)) 
    ).filter(similarity__gt=0.3).order_by('-similarity') 

Mehr Details auf Q https://docs.djangoproject.com/en/1.11/ref/models/querysets/#q-objects

+0

Wenn ich das versuche, bekomme ich "Q ist nicht definiert." Woher hast du das? – Mathyou

+1

von django.db.models import Q – MrE

+0

https://docs.djangoproject.com/de/1.11/ref/models/querysets/#q-objects – MrE

Verwandte Themen