{"title":"Recherches spécifiques à PostgreSQL","version":"6.1","locale":"fr","docname":"ref/contrib/postgres/lookups","url":"/fr/6.1/ref/contrib/postgres/lookups/","canonical":"https://djangodocs.dev/fr/6.1/ref/contrib/postgres/lookups/","summary":"Similarité par trigramme Lien vers cette rubrique # trigram_similar Lien vers cette rubrique # L’expression de requête trigram_similar permet d’effectuer des…","html":"<h1>Recherches spécifiques à PostgreSQL<a class=\"heading-anchor\" href=\"#postgresql-specific-lookups\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"trigram-similarity\">\n<h2>Similarité par trigramme<a class=\"heading-anchor\" href=\"#trigram-similarity\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"trigram-similar\">\n<span id=\"std-fieldlookup-trigram_similar\"></span><h3><code class=\"docutils literal notranslate\"><span class=\"pre\">trigram_similar</span></code><a class=\"heading-anchor\" href=\"#trigram-similar\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>L’expression de requête <code class=\"docutils literal notranslate\"><span class=\"pre\">trigram_similar</span></code> permet d’effectuer des requêtes selon des trigrammes, mesurant le nombre de trigrammes (trois caractères consécutifs) partagés en utilisant une extension PostgreSQL dédiée. Une requête par trigramme reçoit une expression et renvoie des résultats qui ont une mesure de similitude plus grande que le seuil de similitude actuel.</p>\n<p>Pour l’utiliser, ajoutez <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.postgres'</span></code> dans le réglage <a class=\"reference internal\" href=\"/fr/6.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> et activez <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/pgtrgm.html\">l’extension pg_trgm</a> dans PostgreSQL. Vous pouvez installer l’extension par une opération de migration <a class=\"reference internal\" href=\"/fr/6.1/ref/contrib/postgres/operations/#django.contrib.postgres.operations.TrigramExtension\" title=\"django.contrib.postgres.operations.TrigramExtension\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TrigramExtension</span></code></a>.</p>\n<p>La requête <code class=\"docutils literal notranslate\"><span class=\"pre\">trigram_similar</span></code> peut être utilisée avec les champs <a class=\"reference internal\" href=\"/fr/6.1/ref/models/fields/#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CharField</span></code></a> et <a class=\"reference internal\" href=\"/fr/6.1/ref/models/fields/#django.db.models.TextField\" title=\"django.db.models.TextField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextField</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">City</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">name__trigram_similar</span><span class=\"o\">=</span><span class=\"s2\">&quot;Middlesborough&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;City: Middlesbrough&gt;]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"trigram-word-similar\">\n<span id=\"std-fieldlookup-trigram_word_similar\"></span><h3><code class=\"docutils literal notranslate\"><span class=\"pre\">trigram_word_similar</span></code><a class=\"heading-anchor\" href=\"#trigram-word-similar\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>L’expression de requête <code class=\"docutils literal notranslate\"><span class=\"pre\">trigram_word_similar</span></code> permet d’effectuer des requêtes sur la base de similarité de mot par trigramme en utilisant une extension PostgreSQL dédiée. Cela peut être approximativement compris comme la mesure du plus grand nombre de trigrammes partagés entre le paramètre et toute sous-chaîne du champ. Une requête par mot trigramme reçoit une expression et renvoie des résultats qui ont une mesure de similarité de mots plus grande que le seuil de similarité actuel.</p>\n<p>Pour l’utiliser, ajoutez <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.postgres'</span></code> dans le réglage <a class=\"reference internal\" href=\"/fr/6.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> et activez <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/pgtrgm.html\">l’extension pg_trgm</a> dans PostgreSQL. Vous pouvez installer l’extension par une opération de migration <a class=\"reference internal\" href=\"/fr/6.1/ref/contrib/postgres/operations/#django.contrib.postgres.operations.TrigramExtension\" title=\"django.contrib.postgres.operations.TrigramExtension\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TrigramExtension</span></code></a>.</p>\n<p>La requête <code class=\"docutils literal notranslate\"><span class=\"pre\">trigram_word_similar</span></code> peut être utilisée avec les champs <a class=\"reference internal\" href=\"/fr/6.1/ref/models/fields/#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CharField</span></code></a> et <a class=\"reference internal\" href=\"/fr/6.1/ref/models/fields/#django.db.models.TextField\" title=\"django.db.models.TextField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextField</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Sentence</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">name__trigram_word_similar</span><span class=\"o\">=</span><span class=\"s2\">&quot;Middlesborough&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Sentence: Gumby rides on the path of Middlesbrough&gt;]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"trigram-strict-word-similar\">\n<span id=\"std-fieldlookup-trigram_strict_word_similar\"></span><h3><code class=\"docutils literal notranslate\"><span class=\"pre\">trigram_strict_word_similar</span></code><a class=\"heading-anchor\" href=\"#trigram-strict-word-similar\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Semblable à  <a class=\"reference internal\" href=\"#std-fieldlookup-trigram_word_similar\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">trigram_word_similar</span></code></a>, sauf qu’il force à étendre les limites pour correspondre aux limites du mot.</p>\n<p>Pour l’utiliser, ajoutez <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.postgres'</span></code> dans le réglage <a class=\"reference internal\" href=\"/fr/6.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> et activez <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/pgtrgm.html\">l’extension pg_trgm</a> dans PostgreSQL. Vous pouvez installer l’extension par une opération de migration <a class=\"reference internal\" href=\"/fr/6.1/ref/contrib/postgres/operations/#django.contrib.postgres.operations.TrigramExtension\" title=\"django.contrib.postgres.operations.TrigramExtension\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TrigramExtension</span></code></a>.</p>\n<p>La requête <code class=\"docutils literal notranslate\"><span class=\"pre\">trigram_strict_word_similar</span></code> peut être utilisée avec les champs <a class=\"reference internal\" href=\"/fr/6.1/ref/models/fields/#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CharField</span></code></a> et <a class=\"reference internal\" href=\"/fr/6.1/ref/models/fields/#django.db.models.TextField\" title=\"django.db.models.TextField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextField</span></code></a>.</p>\n</section>\n</section>\n<section id=\"unaccent\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Unaccent</span></code><a class=\"heading-anchor\" href=\"#unaccent\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p id=\"std-fieldlookup-unaccent\">La recherche <code class=\"docutils literal notranslate\"><span class=\"pre\">unaccent</span></code> permet d’effectuer des recherches qui ne dépendent pas des différences d’accents en utilisant une extension PostgreSQL dédiée.</p>\n<p>This lookup is implemented using <a class=\"reference internal\" href=\"/fr/6.1/ref/models/lookups/#django.db.models.Transform\" title=\"django.db.models.Transform\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Transform</span></code></a>, so it\ncan be chained with other lookup functions. To use it, you need to add\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.postgres'</span></code> in your <a class=\"reference internal\" href=\"/fr/6.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> and activate\nthe <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/unaccent.html\">unaccent extension on PostgreSQL</a>. The\n<a class=\"reference internal\" href=\"/fr/6.1/ref/contrib/postgres/operations/#django.contrib.postgres.operations.UnaccentExtension\" title=\"django.contrib.postgres.operations.UnaccentExtension\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">UnaccentExtension</span></code></a> migration\noperation is available if you want to perform this activation using\nmigrations.</p>\n<p>La recherche <code class=\"docutils literal notranslate\"><span class=\"pre\">unaccent</span></code> peut être utilisée avec les champs <a class=\"reference internal\" href=\"/fr/6.1/ref/models/fields/#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CharField</span></code></a> et <a class=\"reference internal\" href=\"/fr/6.1/ref/models/fields/#django.db.models.TextField\" title=\"django.db.models.TextField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextField</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">City</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">name__unaccent</span><span class=\"o\">=</span><span class=\"s2\">&quot;México&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;City: Mexico&gt;]&gt;</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">User</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">first_name__unaccent__startswith</span><span class=\"o\">=</span><span class=\"s2\">&quot;Jerem&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;User: Jeremy&gt;, &lt;User: Jérémy&gt;, &lt;User: Jérémie&gt;, &lt;User: Jeremie&gt;]&gt;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Les recherches <code class=\"docutils literal notranslate\"><span class=\"pre\">unaccent</span></code> fonctionnent très bien dans la plupart des cas. Cependant, les requêtes utilisant ce filtre effectuent généralement des parcours complets des tables, ce qui peut être lent pour les grandes tables. Dans ces situations, il peut valoir la peine d’utiliser les outils dédiés d’indexation plein texte.</p>\n</aside>\n</section>","rootId":"postgresql-specific-lookups","toc":[{"title":"Similarité par trigramme","anchor":"trigram-similarity","children":[{"title":"trigram_similar","anchor":"trigram-similar","children":[]},{"title":"trigram_word_similar","anchor":"trigram-word-similar","children":[]},{"title":"trigram_strict_word_similar","anchor":"trigram-strict-word-similar","children":[]}]},{"title":"Unaccent","anchor":"unaccent","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/6.1/ref/"},{"docname":"ref/contrib/index","title":"Paquets contrib","url":"/fr/6.1/ref/contrib/"},{"docname":"ref/contrib/postgres/index","title":"django.contrib.postgres","url":"/fr/6.1/ref/contrib/postgres/"}],"prev":{"docname":"ref/contrib/postgres/indexes","title":"Index de modèles spécifiques à PostgreSQL","url":"/fr/6.1/ref/contrib/postgres/indexes/"},"next":{"docname":"ref/contrib/postgres/operations","title":"Opérations de migration de base de données","url":"/fr/6.1/ref/contrib/postgres/operations/"},"formats":{"html":"/fr/6.1/ref/contrib/postgres/lookups/","markdown":"/fr/6.1/ref/contrib/postgres/lookups.md","json":"/fr/6.1/ref/contrib/postgres/lookups.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/ref/contrib/postgres/lookups.txt","official":"https://docs.djangoproject.com/fr/6.1/ref/contrib/postgres/lookups/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}