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.
This lookup is implemented using Transform, so it
can be chained with other lookup functions. To use it, you need to add
'django.contrib.postgres' in your INSTALLED_APPS and activate
the unaccent extension on PostgreSQL. The
UnaccentExtension migration
operation is available if you want to perform this activation using
migrations.
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.