PostgreSQL-specifika uppslagningar

Likhet mellan trigram

trigram_liknande

Med `` trigram_similar``-uppslagningen kan du utföra trigramuppslagningar, mäta antalet trigram (tre på varandra följande tecken) som delas med hjälp av en dedikerad PostgreSQL-förlängning. En trigramuppslagning ges ett uttryck och returnerar resultat som har en likhetsmätning som är större än det aktuella likhetströskeln.

För att använda den, lägg till 'django.contrib.postgres' i din INSTALLED_APPS och aktivera pg_trgm-förlängningen på PostgreSQL. Du kan installera tillägget med hjälp av TrigramExtension migreringsoperation.

Uppslagningen trigram_similar kan användas på CharField och TextField:

>>> City.objects.filter(name__trigram_similar="Middlesborough")
<QuerySet [<City: Middlesbrough>]>

trigram_ord_liknande

Med trigram_word_similar lookup kan du utföra trigramordlikhetsuppslagningar med hjälp av ett dedikerat PostgreSQL-tillägg. Det kan ungefär förstås som att mäta det största antalet trigram som delas mellan parametern och någon understräng i fältet. En trigramorduppslagning ges ett uttryck och returnerar resultat som har en ordlikhetsmätning som är större än det aktuella likhetströskeln.

För att använda den, lägg till 'django.contrib.postgres' i din INSTALLED_APPS och aktivera pg_trgm-förlängningen på PostgreSQL. Du kan installera tillägget med hjälp av TrigramExtension migreringsoperation.

Uppslagningen trigram_word_similar kan användas på CharField och TextField:

>>> Sentence.objects.filter(name__trigram_word_similar="Middlesborough")
<QuerySet [<Sentence: Gumby rides on the path of Middlesbrough>]>

trigram_strikt_ord_liknande

Liknar trigram_word_similar, förutom att den tvingar extent-gränser att matcha ordgränser.

För att använda den, lägg till 'django.contrib.postgres' i din INSTALLED_APPS och aktivera pg_trgm-förlängningen på PostgreSQL. Du kan installera tillägget med hjälp av TrigramExtension migreringsoperation.

Uppslagningen trigram_strict_word_similar kan användas på CharField och TextField.

Unaccent

Med unaccent lookup kan du utföra accentkänsliga lookups med hjälp av en dedikerad PostgreSQL-förlängning.

Denna uppslagning implementeras med Transform, så det kan kedjas med andra uppslagningsfunktioner. För att använda det måste du lägga till 'django.contrib.postgres i din INSTALLED_APPS och aktivera unaccent-tillägget på PostgreSQL. Migreringsoperationen UnaccentExtension är tillgänglig om du vill utföra denna aktivering med hjälp av migreringar).

Uppslagningen unaccent kan användas på CharField och TextField:

>>> City.objects.filter(name__unaccent="México")
<QuerySet [<City: Mexico>]>

>>> User.objects.filter(first_name__unaccent__startswith="Jerem")
<QuerySet [<User: Jeremy>, <User: Jérémy>, <User: Jérémie>, <User: Jeremie>]>

Varning

Unaccent-uppslagningar bör fungera bra i de flesta användningsfall. Frågor som använder det här filtret kommer dock i allmänhet att utföra fullständiga tabellskanningar, vilket kan vara långsamt i stora tabeller. I dessa fall kan det vara lämpligt att använda dedikerade fulltextindexeringsverktyg.