2016-06-14 13 views
5

Pracujemy nad projektem i używamy Django 1.10a1, używamy wyszukiwania pełnotekstowego django z PostgreSQL, ale musimy użyć wartości niepustej.Jak używać `niepochlebnego` z pełnym przeszukiwaniem tekstu w django 1.10?

Tak, mam ten kod:

 search = 'Car' 
     query_set = Article.objects.annotate(
      search=SearchVector(
       'content', 
       'name' 
       ) 
      ).filter(
      search__unaccent=search 
     ) 

Kiedy próbowaliśmy dodanie unaccent słowo po search kwerenda nie działa. W jaki sposób możemy uzyskać pełnotekstowe wyszukiwanie django do pracy z postacemem nieprzytomnym?

Odpowiedz

7

Zainstalować unaccent rozszerzenie do bazy danych:

mydb=# CREATE EXTENSION unaccent; 

Utwórz nową konfigurację wyszukiwarki, w oparciu o drugi:

mydb=# CREATE TEXT SEARCH CONFIGURATION french_unaccent(COPY = french); 

Insert unaccent słownika do nowego wyszukiwania konfiguracja:

mydb=# ALTER TEXT SEARCH CONFIGURATION french_unaccent 
    ALTER MAPPING FOR hword, hword_part, word 
    WITH unaccent, french_stem; 

Użyj tej konfiguracji w zapytaniu Django:

search = 'Car' 
query_set = Article.objects.annotate(
       search=SearchVector('content','name', config='french_unaccent') 
      ).filter(search=SearchQuery(search, config='french_unaccent'))) 
+0

Można również zainstalować rozszerzenie bezpośrednio z django jak wyjaśniono tutaj: https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/operations/# unaccentextension – psychok7