2016-06-14 24 views
5

Stiamo lavorando a un progetto e stiamo usando Django 1.10a1, stiamo usando la ricerca full text di django con PostgreSQL ma dobbiamo usare unaccent.Come utilizzare `unaccent` con ricerca full text in django 1.10?

Così, ho questo codice:

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

Quando abbiamo provato ad aggiungere unaccent parola dopo search la query non funziona. Come possiamo ottenere la ricerca full text in django per lavorare con post-unaccent?

risposta

7

Installare il unaccent estensione nel database:

mydb=# CREATE EXTENSION unaccent; 

Creare una nuova configurazione di ricerca, sulla base di un altro:

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

Inserire il unaccent dizionario nella vostra nuova ricerca configurazione:

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

Utilizzare questa configurazione nella vostra domanda Django:

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

È inoltre possibile installare l'estensione direttamente da Django come spiegato qui: https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/operations/# unaccentextension – psychok7

Problemi correlati