{"title":"Pencarian teks penuh","version":"6.1","locale":"id","docname":"ref/contrib/postgres/search","url":"/id/6.1/ref/contrib/postgres/search/","canonical":"https://djangodocs.dev/id/6.1/ref/contrib/postgres/search/","summary":"Fungsi-fungsi basisdata dalam modul django.contrib.postgres.search kemudahan penggunaan full text search engine PostgreSQL. Sebagai contoh dalam dokumen ini, kami…","html":"<h1>Pencarian teks penuh<a class=\"heading-anchor\" href=\"#full-text-search\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Fungsi-fungsi basisdata dalam modul <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.search</span></code> kemudahan penggunaan  <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch.html\">full text search engine</a> PostgreSQL.</p>\n<p>Sebagai contoh dalam dokumen ini, kami akan menggunakan model ditentukan dalam <a class=\"reference internal\" href=\"/id/6.1/topics/db/queries/\"><span class=\"doc\">Membuat query</span></a>.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Lihat juga</p>\n<p>Untuk tinjauan tingkat-tinggi dari pencarian, lihat :doc:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>topic documentation <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</aside>\n<section id=\"the-search-lookup\">\n<h2>Pencarian <code class=\"docutils literal notranslate\"><span class=\"pre\">search</span></code><a class=\"heading-anchor\" href=\"#the-search-lookup\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p id=\"std-fieldlookup-search\">A common way to use full text search is to search a single term against a\nsingle column in the database. For example:</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\">Entry</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\">body_text__search</span><span class=\"o\">=</span><span class=\"s2\">&quot;Cheese&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Cheese on Toast recipes&gt;, &lt;Entry: Pizza Recipes&gt;]&gt;</span>\n</code></pre></div>\n<p>Ini membuat sebuah <code class=\"docutils literal notranslate\"><span class=\"pre\">to_tsvector</span></code> dalam basisdata dari bidang <code class=\"docutils literal notranslate\"><span class=\"pre\">body_text</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">plainto_tsquery</span></code> dari istilah pencarian <code class=\"docutils literal notranslate\"><span class=\"pre\">'Cheese'</span></code>, kedua menggunakan konfigurasi pencarian basisdata awalan. Hasil didapatkan dengan mencocokkan permintaan dan vektor.</p>\n<p>Untuk menggunakan pencarian <code class=\"docutils literal notranslate\"><span class=\"pre\">search</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.postgres'</span></code> harus berada dalam <a class=\"reference internal\" href=\"/id/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> anda.</p>\n</section>\n<section id=\"searchvector\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVector</span></code><a class=\"heading-anchor\" href=\"#searchvector\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.SearchVector\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SearchVector</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">expressions</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">config</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">weight</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.SearchVector\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Searching against a single field is great but rather limiting. The <code class=\"docutils literal notranslate\"><span class=\"pre\">Entry</span></code>\ninstances we're searching belong to a <code class=\"docutils literal notranslate\"><span class=\"pre\">Blog</span></code>, which has a <code class=\"docutils literal notranslate\"><span class=\"pre\">tagline</span></code> field.\nTo query against both fields, use a <code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVector</span></code>:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SearchVector</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;blog__tagline&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">search</span><span class=\"o\">=</span><span class=\"s2\">&quot;Cheese&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Cheese on Toast recipes&gt;, &lt;Entry: Pizza Recipes&gt;]&gt;</span>\n</code></pre></div>\n<p>Argumen-argumen pada <code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVector</span></code> dapat berupa <a class=\"reference internal\" href=\"/id/6.1/ref/models/expressions/#django.db.models.Expression\" title=\"django.db.models.Expression\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Expression</span></code></a> apapun atau nama dari sebuah bidang. Banyak argumen akan dihubungkan bersama menggunakan sebuah ruang sehingga pencarian dokumen menyertakan mereka semua.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVector</span></code> objects can be combined together, allowing you to reuse them.\nFor example:</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\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;blog__tagline&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">search</span><span class=\"o\">=</span><span class=\"s2\">&quot;Cheese&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Cheese on Toast recipes&gt;, &lt;Entry: Pizza Recipes&gt;]&gt;</span>\n</code></pre></div>\n<p>Lihat <a class=\"reference internal\" href=\"#postgresql-fts-search-configuration\"><span class=\"std std-ref\">Merubah konfigurasi pencarian</span></a> dan <a class=\"reference internal\" href=\"#postgresql-fts-weighting-queries\"><span class=\"std std-ref\">Meminta pembobotan</span></a> untuk sebuah penjelasan dari parameter <code class=\"docutils literal notranslate\"><span class=\"pre\">config</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">weight</span></code>.</p>\n</section>\n<section id=\"searchquery\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">SearchQuery</span></code><a class=\"heading-anchor\" href=\"#searchquery\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.SearchQuery\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SearchQuery</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">config</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">search_type</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'plain'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.SearchQuery\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">SearchQuery</span></code> menterjemahkan istilah pengguna sediakan kedalam obyek permintaan pencarian yang basisdata bandingkan pada pencarian vektor. Secara awalan, semua kata pengguna sediakan dilewatkan melalui algoritma berasal, dan kemudian itu mencari kecocokan untuk semua istilah yang dihasilkan.</p>\n<p>If <code class=\"docutils literal notranslate\"><span class=\"pre\">search_type</span></code> is <code class=\"docutils literal notranslate\"><span class=\"pre\">'plain'</span></code>, which is the default, the terms are treated\nas separate keywords. If <code class=\"docutils literal notranslate\"><span class=\"pre\">search_type</span></code> is <code class=\"docutils literal notranslate\"><span class=\"pre\">'phrase'</span></code>, the terms are treated\nas a single phrase. If <code class=\"docutils literal notranslate\"><span class=\"pre\">search_type</span></code> is <code class=\"docutils literal notranslate\"><span class=\"pre\">'raw'</span></code>, then you can provide a\nformatted search query with terms and operators. If <code class=\"docutils literal notranslate\"><span class=\"pre\">search_type</span></code> is\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'websearch'</span></code>, then you can provide a formatted search query, similar to the\none used by web search engines. <code class=\"docutils literal notranslate\"><span class=\"pre\">'websearch'</span></code> requires PostgreSQL ≥ 11. Read\nPostgreSQL's <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES\">Full Text Search docs</a> to learn about differences and syntax.\nExamples:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SearchQuery</span><span class=\"p\">,</span> <span class=\"n\">Lexeme</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;red tomato&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># two keywords</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;tomato red&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># same results as above</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;red tomato&quot;</span><span class=\"p\">,</span> <span class=\"n\">search_type</span><span class=\"o\">=</span><span class=\"s2\">&quot;phrase&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># a phrase</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;tomato red&quot;</span><span class=\"p\">,</span> <span class=\"n\">search_type</span><span class=\"o\">=</span><span class=\"s2\">&quot;phrase&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># a different phrase</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;&#39;tomato&#39; &amp; (&#39;red&#39; | &#39;green&#39;)&quot;</span><span class=\"p\">,</span> <span class=\"n\">search_type</span><span class=\"o\">=</span><span class=\"s2\">&quot;raw&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># boolean operators</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;&#39;tomato&#39; (&#39;red&#39; OR &#39;green&#39;)&quot;</span><span class=\"p\">,</span> <span class=\"n\">search_type</span><span class=\"o\">=</span><span class=\"s2\">&quot;websearch&quot;</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>  <span class=\"c1\"># websearch operators</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;tomato&quot;</span><span class=\"p\">)</span> <span class=\"o\">&amp;</span> <span class=\"p\">(</span><span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;red&quot;</span><span class=\"p\">)</span> <span class=\"o\">|</span> <span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;green&quot;</span><span class=\"p\">)))</span>  <span class=\"c1\"># Lexeme objects</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">SearchQuery</span></code> terms can be combined logically to provide more flexibility:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SearchQuery</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;meat&quot;</span><span class=\"p\">)</span> <span class=\"o\">&amp;</span> <span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;cheese&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># AND</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;meat&quot;</span><span class=\"p\">)</span> <span class=\"o\">|</span> <span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;cheese&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># OR</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"o\">~</span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;meat&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># NOT</span>\n</code></pre></div>\n<p>Lihat <a class=\"reference internal\" href=\"#postgresql-fts-search-configuration\"><span class=\"std std-ref\">Merubah konfigurasi pencarian</span></a> untuk sebuah penjelasan dari parameter <code class=\"docutils literal notranslate\"><span class=\"pre\">config</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"6.0\">\n<p class=\"version-note-title\">Changed in Django 6.0</p><p><a class=\"reference internal\" href=\"#django.contrib.postgres.search.Lexeme\" title=\"django.contrib.postgres.search.Lexeme\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Lexeme</span></code></a> objects were added.</p>\n</aside>\n</section>\n<section id=\"searchrank\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">SearchRank</span></code><a class=\"heading-anchor\" href=\"#searchrank\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.SearchRank\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SearchRank</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">vector</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">query</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">weights</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">normalization</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">cover_density</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.SearchRank\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>So far, we've returned the results for which any match between the vector and\nthe query are possible. It's likely you may wish to order the results by some\nsort of relevancy. PostgreSQL provides a ranking function which takes into\naccount how often the query terms appear in the document, how close together\nthe terms are in the document, and how important the part of the document is\nwhere they occur. The better the match, the higher the value of the rank. To\norder by relevancy:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SearchQuery</span><span class=\"p\">,</span> <span class=\"n\">SearchRank</span><span class=\"p\">,</span> <span class=\"n\">SearchVector</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">vector</span> <span class=\"o\">=</span> <span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">query</span> <span class=\"o\">=</span> <span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;cheese&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">rank</span><span class=\"o\">=</span><span class=\"n\">SearchRank</span><span class=\"p\">(</span><span class=\"n\">vector</span><span class=\"p\">,</span> <span class=\"n\">query</span><span class=\"p\">))</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"s2\">&quot;-rank&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Cheese on Toast recipes&gt;, &lt;Entry: Pizza recipes&gt;]&gt;</span>\n</code></pre></div>\n<p>Lihat <a class=\"reference internal\" href=\"#postgresql-fts-weighting-queries\"><span class=\"std std-ref\">Meminta pembobotan</span></a> untuk penjelasan dari parameter <code class=\"docutils literal notranslate\"><span class=\"pre\">weights</span></code>.</p>\n<p>Set the <code class=\"docutils literal notranslate\"><span class=\"pre\">cover_density</span></code> parameter to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> to enable the cover density\nranking, which means that the proximity of matching query terms is taken into\naccount.</p>\n<p>Provide an integer to the <code class=\"docutils literal notranslate\"><span class=\"pre\">normalization</span></code> parameter to control rank\nnormalization. This integer is a bit mask, so you can combine multiple\nbehaviors:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Value</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">rank</span><span class=\"o\">=</span><span class=\"n\">SearchRank</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"n\">vector</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"n\">query</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"n\">normalization</span><span class=\"o\">=</span><span class=\"n\">Value</span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">bitor</span><span class=\"p\">(</span><span class=\"n\">Value</span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">)),</span>\n<span class=\"gp\">... </span>    <span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>The PostgreSQL documentation has more details about <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-RANKING\">different rank\nnormalization options</a>.</p>\n</section>\n<section id=\"searchheadline\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">SearchHeadline</span></code><a class=\"heading-anchor\" href=\"#searchheadline\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.SearchHeadline\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SearchHeadline</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">query</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">config</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">start_sel</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">stop_sel</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_words</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">min_words</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">short_word</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">highlight_all</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_fragments</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fragment_delimiter</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.SearchHeadline\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or an expression, a query, a config, and a set of\noptions. Returns highlighted search results.</p>\n<p>Set the <code class=\"docutils literal notranslate\"><span class=\"pre\">start_sel</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">stop_sel</span></code> parameters to the string values to be\nused to wrap highlighted query terms in the document. PostgreSQL's defaults are\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;b&gt;</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;/b&gt;</span></code>.</p>\n<p>Provide integer values to the <code class=\"docutils literal notranslate\"><span class=\"pre\">max_words</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">min_words</span></code> parameters to\ndetermine the longest and shortest headlines. PostgreSQL's defaults are 35 and\n15.</p>\n<p>Provide an integer value to the <code class=\"docutils literal notranslate\"><span class=\"pre\">short_word</span></code> parameter to discard words of\nthis length or less in each headline. PostgreSQL's default is 3.</p>\n<p>Set the <code class=\"docutils literal notranslate\"><span class=\"pre\">highlight_all</span></code> parameter to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> to use the whole document in\nplace of a fragment and ignore <code class=\"docutils literal notranslate\"><span class=\"pre\">max_words</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">min_words</span></code>, and <code class=\"docutils literal notranslate\"><span class=\"pre\">short_word</span></code>\nparameters. That's disabled by default in PostgreSQL.</p>\n<p>Provide a non-zero integer value to the <code class=\"docutils literal notranslate\"><span class=\"pre\">max_fragments</span></code> to set the maximum\nnumber of fragments to display. That's disabled by default in PostgreSQL.</p>\n<p>Set the <code class=\"docutils literal notranslate\"><span class=\"pre\">fragment_delimiter</span></code> string parameter to configure the delimiter\nbetween fragments. PostgreSQL's default is <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;</span> <span class=\"pre\">...</span> <span class=\"pre\">&quot;</span></code>.</p>\n<p>The PostgreSQL documentation has more details on <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-HEADLINE\">highlighting search\nresults</a>.</p>\n<p>Usage example:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SearchHeadline</span><span class=\"p\">,</span> <span class=\"n\">SearchQuery</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">query</span> <span class=\"o\">=</span> <span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;red tomato&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">entry</span> <span class=\"o\">=</span> <span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">headline</span><span class=\"o\">=</span><span class=\"n\">SearchHeadline</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"n\">query</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"n\">start_sel</span><span class=\"o\">=</span><span class=\"s2\">&quot;&lt;span&gt;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"n\">stop_sel</span><span class=\"o\">=</span><span class=\"s2\">&quot;&lt;/span&gt;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">entry</span><span class=\"o\">.</span><span class=\"n\">headline</span><span class=\"p\">)</span>\n<span class=\"go\">Sandwich with &lt;span&gt;tomato&lt;/span&gt; and &lt;span&gt;red&lt;/span&gt; cheese.</span>\n</code></pre></div>\n<p>Lihat <a class=\"reference internal\" href=\"#postgresql-fts-search-configuration\"><span class=\"std std-ref\">Merubah konfigurasi pencarian</span></a> untuk sebuah penjelasan dari parameter <code class=\"docutils literal notranslate\"><span class=\"pre\">config</span></code>.</p>\n</section>\n<section id=\"changing-the-search-configuration\">\n<span id=\"postgresql-fts-search-configuration\"></span><h2>Merubah konfigurasi pencarian<a class=\"heading-anchor\" href=\"#changing-the-search-configuration\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>You can specify the <code class=\"docutils literal notranslate\"><span class=\"pre\">config</span></code> attribute to a <a class=\"reference internal\" href=\"#django.contrib.postgres.search.SearchVector\" title=\"django.contrib.postgres.search.SearchVector\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SearchVector</span></code></a> and\n<a class=\"reference internal\" href=\"#django.contrib.postgres.search.SearchQuery\" title=\"django.contrib.postgres.search.SearchQuery\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SearchQuery</span></code></a> to use a different search configuration. This allows using\ndifferent language parsers and dictionaries as defined by the database:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SearchQuery</span><span class=\"p\">,</span> <span class=\"n\">SearchVector</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">,</span> <span class=\"n\">config</span><span class=\"o\">=</span><span class=\"s2\">&quot;french&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;œuf&quot;</span><span class=\"p\">,</span> <span class=\"n\">config</span><span class=\"o\">=</span><span class=\"s2\">&quot;french&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Pain perdu&gt;]&gt;</span>\n</code></pre></div>\n<p>The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">config</span></code> could also be stored in another column:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">F</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">,</span> <span class=\"n\">config</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;blog__language&quot;</span><span class=\"p\">)),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;œuf&quot;</span><span class=\"p\">,</span> <span class=\"n\">config</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;blog__language&quot;</span><span class=\"p\">)))</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Pain perdu&gt;]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"weighting-queries\">\n<span id=\"postgresql-fts-weighting-queries\"></span><h2>Meminta pembobotan<a class=\"heading-anchor\" href=\"#weighting-queries\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Every field may not have the same relevance in a query, so you can set weights\nof various vectors before you combine them:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SearchQuery</span><span class=\"p\">,</span> <span class=\"n\">SearchRank</span><span class=\"p\">,</span> <span class=\"n\">SearchVector</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">vector</span> <span class=\"o\">=</span> <span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">,</span> <span class=\"n\">weight</span><span class=\"o\">=</span><span class=\"s2\">&quot;A&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"n\">SearchVector</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;blog__tagline&quot;</span><span class=\"p\">,</span> <span class=\"n\">weight</span><span class=\"o\">=</span><span class=\"s2\">&quot;B&quot;</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">query</span> <span class=\"o\">=</span> <span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"s2\">&quot;cheese&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">rank</span><span class=\"o\">=</span><span class=\"n\">SearchRank</span><span class=\"p\">(</span><span class=\"n\">vector</span><span class=\"p\">,</span> <span class=\"n\">query</span><span class=\"p\">))</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">rank__gte</span><span class=\"o\">=</span><span class=\"mf\">0.3</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;rank&quot;</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>The weight should be one of the following letters: D, C, B, A. By default,\nthese weights refer to the numbers <code class=\"docutils literal notranslate\"><span class=\"pre\">0.1</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">0.2</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">0.4</span></code>, and <code class=\"docutils literal notranslate\"><span class=\"pre\">1.0</span></code>,\nrespectively. If you wish to weight them differently, pass a list of four\nfloats to <a class=\"reference internal\" href=\"#django.contrib.postgres.search.SearchRank\" title=\"django.contrib.postgres.search.SearchRank\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SearchRank</span></code></a> as <code class=\"docutils literal notranslate\"><span class=\"pre\">weights</span></code> in the same order above:</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\">rank</span> <span class=\"o\">=</span> <span class=\"n\">SearchRank</span><span class=\"p\">(</span><span class=\"n\">vector</span><span class=\"p\">,</span> <span class=\"n\">query</span><span class=\"p\">,</span> <span class=\"n\">weights</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"mf\">0.2</span><span class=\"p\">,</span> <span class=\"mf\">0.4</span><span class=\"p\">,</span> <span class=\"mf\">0.6</span><span class=\"p\">,</span> <span class=\"mf\">0.8</span><span class=\"p\">])</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">rank</span><span class=\"o\">=</span><span class=\"n\">rank</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">rank__gte</span><span class=\"o\">=</span><span class=\"mf\">0.3</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"s2\">&quot;-rank&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"lexeme\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Lexeme</span></code><a class=\"heading-anchor\" href=\"#lexeme\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<aside class=\"version-note version-added\" data-version=\"6.0\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.Lexeme\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Lexeme</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">output_field</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\"><span class=\"pre\">*</span></abbr></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">invert</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">prefix</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">weight</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.Lexeme\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">Lexeme</span></code> objects allow search operators to be safely used with strings from\nan untrusted source. The content of each lexeme is escaped so that any\noperators that may exist in the string itself will not be interpreted.</p>\n<p>You can combine lexemes with other lexemes using the <code class=\"docutils literal notranslate\"><span class=\"pre\">&amp;</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">|</span></code> operators\nand also negate them with the <code class=\"docutils literal notranslate\"><span class=\"pre\">~</span></code> operator. For example:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SearchQuery</span><span class=\"p\">,</span> <span class=\"n\">SearchVector</span><span class=\"p\">,</span> <span class=\"n\">Lexeme</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">vector</span> <span class=\"o\">=</span> <span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;blog__tagline&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">vector</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;fruit&quot;</span><span class=\"p\">)</span> <span class=\"o\">&amp;</span> <span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;dessert&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Apple Crumble Recipes&gt;, &lt;Entry: Banana Split Recipes&gt;]&gt;</span>\n</code></pre></div>\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\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">vector</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;fruit&quot;</span><span class=\"p\">)</span> <span class=\"o\">&amp;</span> <span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;dessert&quot;</span><span class=\"p\">)</span> <span class=\"o\">&amp;</span> <span class=\"o\">~</span><span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;banana&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Apple Crumble Recipes&gt;]&gt;</span>\n</code></pre></div>\n<p>Lexeme objects also support term weighting and prefixes:</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\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">vector</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;Pizza&quot;</span><span class=\"p\">)</span> <span class=\"o\">|</span> <span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;Cheese&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Cheese on Toast recipes&gt;, &lt;Entry: Pizza recipes&gt;]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">vector</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;Pizza&quot;</span><span class=\"p\">)</span> <span class=\"o\">|</span> <span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;Cheese&quot;</span><span class=\"p\">,</span> <span class=\"n\">weight</span><span class=\"o\">=</span><span class=\"s2\">&quot;A&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Pizza recipes&gt;]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">vector</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">search</span><span class=\"o\">=</span><span class=\"n\">SearchQuery</span><span class=\"p\">(</span><span class=\"n\">Lexeme</span><span class=\"p\">(</span><span class=\"s2\">&quot;za&quot;</span><span class=\"p\">,</span> <span class=\"n\">prefix</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet []&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"performance\">\n<h2>Penampilan<a class=\"heading-anchor\" href=\"#performance\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Konfigurasi basisdata khusus tidak diperlukan untuk menggunakan fungsi ini apapun, bagaimapun, jika anda sedang mencari lebih dari sedikit ratusan rekaman, anda mungkin berjalan kedalam masalah penampilan. Pencarian teks penuh adalah pengolahan lebih intensif daripada membandingkan ukuran dari integer, sebagai contoh.</p>\n<p>In the event that all the fields you're querying on are contained within one\nparticular model, you can create a functional\n<a class=\"reference internal\" href=\"/id/6.1/ref/contrib/postgres/indexes/#django.contrib.postgres.indexes.GinIndex\" title=\"django.contrib.postgres.indexes.GinIndex\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GinIndex</span></code></a> or\n<a class=\"reference internal\" href=\"/id/6.1/ref/contrib/postgres/indexes/#django.contrib.postgres.indexes.GistIndex\" title=\"django.contrib.postgres.indexes.GistIndex\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GistIndex</span></code></a> which matches the search\nvector you wish to use. For example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"n\">GinIndex</span><span class=\"p\">(</span>\n    <span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">,</span> <span class=\"n\">config</span><span class=\"o\">=</span><span class=\"s2\">&quot;english&quot;</span><span class=\"p\">),</span>\n    <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;search_vector_idx&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>The PostgreSQL docs has details on <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-tables.html#TEXTSEARCH-TABLES-INDEX\">creating indexes for full text search</a>.</p>\n<section id=\"searchvectorfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVectorField</span></code><a class=\"heading-anchor\" href=\"#searchvectorfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.SearchVectorField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SearchVectorField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.SearchVectorField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>If this approach becomes too slow, you can add a <code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVectorField</span></code> to your\nmodel. You'll need to keep it populated with triggers, for example, as\ndescribed in the <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-features.html#TEXTSEARCH-UPDATE-TRIGGERS\">PostgreSQL documentation</a>. You can then query the field as\nif it were an annotated <code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVector</span></code>:</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\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">search_vector</span><span class=\"o\">=</span><span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Entry</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\">search_vector</span><span class=\"o\">=</span><span class=\"s2\">&quot;cheese&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Entry: Cheese on Toast recipes&gt;, &lt;Entry: Pizza recipes&gt;]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"using-generatedfield\">\n<h3>Using <code class=\"docutils literal notranslate\"><span class=\"pre\">GeneratedField</span></code><a class=\"heading-anchor\" href=\"#using-generatedfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>An alternative method is to use a <a class=\"reference internal\" href=\"/id/6.1/ref/models/fields/#django.db.models.GeneratedField\" title=\"django.db.models.GeneratedField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GeneratedField</span></code></a>,\nwhich has PostgreSQL maintain the column rather than a trigger:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.indexes</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GinIndex</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SearchVector</span><span class=\"p\">,</span> <span class=\"n\">SearchVectorField</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Entry</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">headline</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">)</span>\n    <span class=\"n\">body_text</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">TextField</span><span class=\"p\">()</span>\n\n    <span class=\"n\">search_vector</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">GeneratedField</span><span class=\"p\">(</span>\n        <span class=\"n\">expression</span><span class=\"o\">=</span><span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">,</span> <span class=\"n\">weight</span><span class=\"o\">=</span><span class=\"s2\">&quot;A&quot;</span><span class=\"p\">,</span> <span class=\"n\">config</span><span class=\"o\">=</span><span class=\"s2\">&quot;english&quot;</span><span class=\"p\">)</span>\n        <span class=\"o\">+</span> <span class=\"n\">SearchVector</span><span class=\"p\">(</span><span class=\"s2\">&quot;body_text&quot;</span><span class=\"p\">,</span> <span class=\"n\">weight</span><span class=\"o\">=</span><span class=\"s2\">&quot;B&quot;</span><span class=\"p\">,</span> <span class=\"n\">config</span><span class=\"o\">=</span><span class=\"s2\">&quot;english&quot;</span><span class=\"p\">),</span>\n        <span class=\"n\">output_field</span><span class=\"o\">=</span><span class=\"n\">SearchVectorField</span><span class=\"p\">(),</span>\n        <span class=\"n\">db_persist</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        <span class=\"n\">indexes</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">GinIndex</span><span class=\"p\">(</span><span class=\"n\">fields</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;search_vector&quot;</span><span class=\"p\">])]</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"trigram-similarity\">\n<h2>Kemiripan trigram<a class=\"heading-anchor\" href=\"#trigram-similarity\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Another approach to searching is trigram similarity. A trigram is a group of\nthree consecutive characters. In addition to the <a class=\"reference internal\" href=\"/id/6.1/ref/contrib/postgres/lookups/#std-fieldlookup-trigram_similar\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">trigram_similar</span></code></a>,\n<a class=\"reference internal\" href=\"/id/6.1/ref/contrib/postgres/lookups/#std-fieldlookup-trigram_word_similar\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">trigram_word_similar</span></code></a>, and <a class=\"reference internal\" href=\"/id/6.1/ref/contrib/postgres/lookups/#std-fieldlookup-trigram_strict_word_similar\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">trigram_strict_word_similar</span></code></a>\nlookups, you can use a couple of other expressions.</p>\n<p>Untuk menggunakan mereka, anda butuh mengaktifkan <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/pgtrgm.html\">pg_trgm extension</a> pada PostgreSQL. Anda dapat memasang itu menggunakan tindakan perpindahan <a class=\"reference internal\" href=\"/id/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<section id=\"trigramsimilarity\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">TrigramSimilarity</span></code><a class=\"heading-anchor\" href=\"#trigramsimilarity\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.TrigramSimilarity\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TrigramSimilarity</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">string</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.TrigramSimilarity\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Menerima nama bidang atau pernyataan, dan string atau pernyataan. Mengembalikan kemiripan trigram diantara dua argumen.</p>\n<p>Usage example:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TrigramSimilarity</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Katy Stevens&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Stephen Keats&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">test</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Katie Stephens&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">similarity</span><span class=\"o\">=</span><span class=\"n\">TrigramSimilarity</span><span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"n\">test</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">similarity__gt</span><span class=\"o\">=</span><span class=\"mf\">0.3</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"s2\">&quot;-similarity&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Author: Katy Stevens&gt;, &lt;Author: Stephen Keats&gt;]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"trigramwordsimilarity\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">TrigramWordSimilarity</span></code><a class=\"heading-anchor\" href=\"#trigramwordsimilarity\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.TrigramWordSimilarity\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TrigramWordSimilarity</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">string</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.TrigramWordSimilarity\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a string or expression, and a field name or expression. Returns the\ntrigram word similarity between the two arguments.</p>\n<p>Usage example:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TrigramWordSimilarity</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Katy Stevens&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Stephen Keats&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">test</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Kat&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">similarity</span><span class=\"o\">=</span><span class=\"n\">TrigramWordSimilarity</span><span class=\"p\">(</span><span class=\"n\">test</span><span class=\"p\">,</span> <span class=\"s2\">&quot;name&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">similarity__gt</span><span class=\"o\">=</span><span class=\"mf\">0.3</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"s2\">&quot;-similarity&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Author: Katy Stevens&gt;]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"trigramstrictwordsimilarity\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">TrigramStrictWordSimilarity</span></code><a class=\"heading-anchor\" href=\"#trigramstrictwordsimilarity\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.TrigramStrictWordSimilarity\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TrigramStrictWordSimilarity</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">string</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.TrigramStrictWordSimilarity\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a string or expression, and a field name or expression. Returns the\ntrigram strict word similarity between the two arguments. Similar to\n<a class=\"reference internal\" href=\"#django.contrib.postgres.search.TrigramWordSimilarity\" title=\"django.contrib.postgres.search.TrigramWordSimilarity\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TrigramWordSimilarity()</span></code></a>, except that it forces\nextent boundaries to match word boundaries.</p>\n</section>\n<section id=\"trigramdistance\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">TrigramDistance</span></code><a class=\"heading-anchor\" href=\"#trigramdistance\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.TrigramDistance\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TrigramDistance</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">string</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.TrigramDistance\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Menerima nama bidang atau pernyataan, dan string atau pernyataan. mengembalikan jarak trigram diantara dua argumen.</p>\n<p>Usage example:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TrigramDistance</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Katy Stevens&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Stephen Keats&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">test</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Katie Stephens&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">distance</span><span class=\"o\">=</span><span class=\"n\">TrigramDistance</span><span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"n\">test</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">distance__lte</span><span class=\"o\">=</span><span class=\"mf\">0.7</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"s2\">&quot;distance&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Author: Katy Stevens&gt;, &lt;Author: Stephen Keats&gt;]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"trigramworddistance\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">TrigramWordDistance</span></code><a class=\"heading-anchor\" href=\"#trigramworddistance\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.TrigramWordDistance\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TrigramWordDistance</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">string</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.TrigramWordDistance\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a string or expression, and a field name or expression. Returns the\ntrigram word distance between the two arguments.</p>\n<p>Usage example:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.search</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TrigramWordDistance</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Katy Stevens&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Stephen Keats&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">test</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Kat&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">distance</span><span class=\"o\">=</span><span class=\"n\">TrigramWordDistance</span><span class=\"p\">(</span><span class=\"n\">test</span><span class=\"p\">,</span> <span class=\"s2\">&quot;name&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">distance__lte</span><span class=\"o\">=</span><span class=\"mf\">0.7</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"s2\">&quot;distance&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Author: Katy Stevens&gt;]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"trigramstrictworddistance\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">TrigramStrictWordDistance</span></code><a class=\"heading-anchor\" href=\"#trigramstrictworddistance\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.search.TrigramStrictWordDistance\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TrigramStrictWordDistance</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">string</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.search.TrigramStrictWordDistance\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a string or expression, and a field name or expression. Returns the\ntrigram strict word distance between the two arguments.</p>\n</section>\n</section>","rootId":"full-text-search","toc":[{"title":"Pencarian search","anchor":"the-search-lookup","children":[]},{"title":"SearchVector","anchor":"searchvector","children":[]},{"title":"SearchQuery","anchor":"searchquery","children":[]},{"title":"SearchRank","anchor":"searchrank","children":[]},{"title":"SearchHeadline","anchor":"searchheadline","children":[]},{"title":"Merubah konfigurasi pencarian","anchor":"changing-the-search-configuration","children":[]},{"title":"Meminta pembobotan","anchor":"weighting-queries","children":[]},{"title":"Lexeme","anchor":"lexeme","children":[]},{"title":"Penampilan","anchor":"performance","children":[{"title":"SearchVectorField","anchor":"searchvectorfield","children":[]},{"title":"Using GeneratedField","anchor":"using-generatedfield","children":[]}]},{"title":"Kemiripan trigram","anchor":"trigram-similarity","children":[{"title":"TrigramSimilarity","anchor":"trigramsimilarity","children":[]},{"title":"TrigramWordSimilarity","anchor":"trigramwordsimilarity","children":[]},{"title":"TrigramStrictWordSimilarity","anchor":"trigramstrictwordsimilarity","children":[]},{"title":"TrigramDistance","anchor":"trigramdistance","children":[]},{"title":"TrigramWordDistance","anchor":"trigramworddistance","children":[]},{"title":"TrigramStrictWordDistance","anchor":"trigramstrictworddistance","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Acuan API","url":"/id/6.1/ref/"},{"docname":"ref/contrib/index","title":"Paket contrib","url":"/id/6.1/ref/contrib/"},{"docname":"ref/contrib/postgres/index","title":"django.contrib.postgres","url":"/id/6.1/ref/contrib/postgres/"}],"prev":{"docname":"ref/contrib/postgres/operations","title":"Tindakan perpindahan basisdata","url":"/id/6.1/ref/contrib/postgres/operations/"},"next":{"docname":"ref/contrib/postgres/validators","title":"Pengesah","url":"/id/6.1/ref/contrib/postgres/validators/"},"formats":{"html":"/id/6.1/ref/contrib/postgres/search/","markdown":"/id/6.1/ref/contrib/postgres/search.md","json":"/id/6.1/ref/contrib/postgres/search.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/ref/contrib/postgres/search.txt","official":"https://docs.djangoproject.com/id/6.1/ref/contrib/postgres/search/","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"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}