2016-11-17 11 views
2

Ich versuche, Volltextsuche für Django 1.10 mit Postgres-Datenbank zu integrieren. Ich verfolge Tutorial von https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/search/django 1.10 postgres Volltextsuche funktioniert nicht

class Question(models.Model): 
    text = models.TextField(max_length=500) 
    ans = models.TextField(max_length=1500, blank=True) 

habe ich mehrere Fragen in der Datenbank, die zum Beispiel den Text ‚für‘ in seinem Textfeld hat: eine Frage ist:

text: what is best for me? 
ans: this is best for you. 

Ich versuche, um eine Abfrage wie

q = Question.objects.filter(text__search='for') 

zu machen, aber diese Abfrage gibt kein Ergebnis zurück. kann mir jemand warum vorschlagen?

+1

Um die Suchsuche zu verwenden, muss "django.contrib.postgres" in INSTALLED_APPS enthalten sein. Haben Sie es dort notiert? – user2693928

+1

(1) Überprüfen Sie, welche Abfrage tatsächlich ausgeführt wird, indem Sie sich in PostgreSQL anmelden und die Protokolle überprüfen. (2) Stellen Sie sicher, dass "for" kein Stoppwort für Ihr Wörterbuch ist und ausgefiltert wurde. –

+0

Ich habe "django.contrib.postgres" in Postgres hinzugefügt. Es ist nicht nur für 'for' Wort. Wenn ich für ein anderes Wort wie "das" ersetze, dann zeigt es auch keine korrekten Ergebnisse. 2) meine Abfrage: SELECT ••• FROM "faq_question" WHERE to_tsvector (COALESCE ("faq_question". "Text", "")) @@ (plainto_tsquery ('for')) = wahr –

Antwort

3

Es ist eigentlich mein Fehler. Bei der Volltextsuche, wenn Postgres einen Index erstellt, ignoriert er standardmäßig gängige Wörter wie 'das', 'für', 'sind', 'ist' usw. Wenn Sie also versuchen, mit diesen Stichwörtern zu suchen, wird die Suchabfrage auch dort leer bleiben Es gibt viele Sätze mit diesen Wörtern. Ich wusste das nicht. Also dachte ich, ich hätte falsch konfiguriert.