Pencarian khusus PostgreSQL¶
Kemiripan trigram¶
trigram_similar
¶
Pencarian trigram_similar
mengizinkan anda melakukan pencarian triagram, mengukur angka dari triagram (tiga karakter berurutan) dibagi, menggunakan tambahan PostgreSQL keseluruhan. Sebuah pencarian triagram diberikan sebuah pernyataan dan mengembalikan hasil bahwa mempunyai pengukuran kemiripan lebih besar dari ambang kemiripan saat ini.
To use it, add 'django.contrib.postgres'
in your INSTALLED_APPS
and activate the pg_trgm extension on PostgreSQL. You can install the
extension using the
TrigramExtension
migration
operation.
The trigram_similar
lookup can be used on
CharField
and TextField
:
>>> City.objects.filter(name__trigram_similar="Middlesborough")
['<City: Middlesbrough>']
trigram_word_similar
¶
The trigram_word_similar
lookup allows you to perform trigram word
similarity lookups using a dedicated PostgreSQL extension. It can be
approximately understood as measuring the greatest number of trigrams shared
between the parameter and any substring of the field. A trigram word lookup is
given an expression and returns results that have a word similarity measurement
greater than the current similarity threshold.
To use it, add 'django.contrib.postgres'
in your INSTALLED_APPS
and activate the pg_trgm extension on PostgreSQL. You can install the
extension using the
TrigramExtension
migration
operation.
The trigram_word_similar
lookup can be used on
CharField
and TextField
:
>>> Sentence.objects.filter(name__trigram_word_similar="Middlesborough")
['<Sentence: Gumby rides on the path of Middlesbrough>']
trigram_strict_word_similar
¶
Similar to trigram_word_similar
, except that it forces extent
boundaries to match word boundaries.
To use it, add 'django.contrib.postgres'
in your INSTALLED_APPS
and activate the pg_trgm extension on PostgreSQL. You can install the
extension using the
TrigramExtension
migration
operation.
The trigram_strict_word_similar
lookup can be used on
CharField
and TextField
.
Unaccent
¶
Pencarian unaccent
mengizinkan anda melakukan pencarian aksen-peka menggunakan tambahan PostgreSQL khusus.
Pencarian ini diterapkan menggunakan Transform
, jadi itu dapat diikat dengan fungsi pencarian lain. Untuk menggunakan itu, anda butuh menambah 'django.contrib.postgres'
dalam INSTALLED_APPS
anda dan mengaktifkan unaccent extension on PostgreSQL. Tindakan perpindahan UnaccentExtension
tersedia jika anda ingin melakukan pengaktivan ini menggunakan perpindahan).
The unaccent
lookup can be used on
CharField
and TextField
:
>>> City.objects.filter(name__unaccent="México")
['<City: Mexico>']
>>> User.objects.filter(first_name__unaccent__startswith="Jerem")
['<User: Jeremy>', '<User: Jérémy>', '<User: Jérémie>', '<User: Jeremie>']
Peringatan
Pencarian unaccent
harus tampil baik dalam kebanyakan pengunaan kasus. Bagaimanapun, permintaan menggunakan penyaring ini akan umumnya melakukan pemindaian tabel penuh, yang dapat melambatkan pada tabel-tabel besar. Dalam kasus-kasus tersebut, menggunakan alat-alat pengindeksan teks penuh yang berdedikasi mungkin sesuai.