{"title":"Fulltextsökning","version":"5.2","locale":"sv","docname":"ref/contrib/postgres/search","url":"/sv/5.2/ref/contrib/postgres/search/","canonical":"https://djangodocs.dev/sv/5.2/ref/contrib/postgres/search/","summary":"Databasfunktionerna i modulen django.contrib.postgres.search underlättar användningen av PostgreSQLs fulltextsökmotor . I exemplen i det här dokumentet använder vi…","html":"<h1>Fulltextsökning<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>Databasfunktionerna i modulen <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.search</span></code> underlättar användningen av PostgreSQLs <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch.html\">fulltextsökmotor</a>.</p>\n<p>I exemplen i det här dokumentet använder vi de modeller som definieras i <a class=\"reference internal\" href=\"/sv/5.2/topics/db/queries/\"><span class=\"doc\">Göra förfrågningar</span></a>.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Se även</p>\n<p>För en översikt på hög nivå över sökning, se <a class=\"reference internal\" href=\"/sv/5.2/topics/db/search/\"><span class=\"doc\">topic documentation</span></a>.</p>\n</aside>\n<section id=\"the-search-lookup\">\n<h2>Uppslagsordet <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\">Ett vanligt sätt att använda fulltextsökning är att söka en enskild term mot en enskild kolumn i databasen. Till exempel:</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>Detta skapar en <code class=\"docutils literal notranslate\"><span class=\"pre\">to_tsvector</span></code> i databasen från fältet <code class=\"docutils literal notranslate\"><span class=\"pre\">body_text</span></code> och en <code class=\"docutils literal notranslate\"><span class=\"pre\">plainto_tsquery</span></code> från söktermen <code class=\"docutils literal notranslate\"><span class=\"pre\">'Cheese'</span></code>, båda med standardkonfigurationen för databassökning. Resultaten erhålls genom att matcha frågan och vektorn.</p>\n<p>För att använda <code class=\"docutils literal notranslate\"><span class=\"pre\">search</span></code>-uppslaget måste <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.postgres</span></code> finnas i din <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p>\n</section>\n<section id=\"searchvector\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">SökVektor</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>Att söka mot ett enda fält är bra men ganska begränsande. De <code class=\"docutils literal notranslate\"><span class=\"pre\">Entry</span></code>-instanser vi söker tillhör en <code class=\"docutils literal notranslate\"><span class=\"pre\">Blog</span></code>, som har ett <code class=\"docutils literal notranslate\"><span class=\"pre\">tagline</span></code>-fält. Om du vill söka mot båda fälten använder du en <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>Argumenten till <code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVector</span></code> kan vara vilken <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Expression`</span></code> som helst eller namnet på ett fält. Flera argument kommer att sammanfogas med ett mellanslag så att sökdokumentet innehåller dem alla.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVector</span></code>-objekt kan kombineras med varandra, vilket gör att du kan återanvända dem. Ett exempel:</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>Se <a class=\"reference internal\" href=\"#postgresql-fts-search-configuration\"><span class=\"std std-ref\">Ändra sökkonfigurationen</span></a> och <a class=\"reference internal\" href=\"#postgresql-fts-weighting-queries\"><span class=\"std std-ref\">Viktning av frågor</span></a> för en förklaring av parametrarna <code class=\"docutils literal notranslate\"><span class=\"pre\">config</span></code> och <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\">Sökfråga</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> översätter de termer som användaren anger till ett sökfrågeobjekt som databasen jämför med en sökvektor. Som standard skickas alla ord som användaren anger genom stamningsalgoritmerna och sedan letar den efter matchningar för alla resulterande termer.</p>\n<p>Om <code class=\"docutils literal notranslate\"><span class=\"pre\">search_type</span></code> är <code class=\"docutils literal notranslate\"><span class=\"pre\">'plain</span></code>, vilket är standard, behandlas termerna som separata nyckelord. Om <code class=\"docutils literal notranslate\"><span class=\"pre\">search_type</span></code> är <code class=\"docutils literal notranslate\"><span class=\"pre\">'phrase</span></code> behandlas termerna som en enda fras. Om <code class=\"docutils literal notranslate\"><span class=\"pre\">search_type</span></code> är <code class=\"docutils literal notranslate\"><span class=\"pre\">'raw</span></code> kan du ange en formaterad sökfråga med termer och operatorer. Om <code class=\"docutils literal notranslate\"><span class=\"pre\">search_type</span></code> är <code class=\"docutils literal notranslate\"><span class=\"pre\">'websearch</span></code> kan du ange en formaterad sökfråga som liknar den som används av webbsökmotorer. <code class=\"docutils literal notranslate\"><span class=\"pre\">'websearch'</span></code> kräver PostgreSQL ≥ 11. Läs PostgreSQL: s <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES\">Full Text Search docs</a> för att lära dig mer om skillnader och syntax. Exempel:</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;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</code></pre></div>\n<p>termerna i <code class=\"docutils literal notranslate\"><span class=\"pre\">SearchQuery</span></code> kan kombineras logiskt för att ge mer flexibilitet:</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>Se <a class=\"reference internal\" href=\"#postgresql-fts-search-configuration\"><span class=\"std std-ref\">Ändra sökkonfigurationen</span></a> för en förklaring av parametern <code class=\"docutils literal notranslate\"><span class=\"pre\">config</span></code>.</p>\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>Hittills har vi returnerat de resultat för vilka någon matchning mellan vektorn och frågan är möjlig. Det är troligt att du kanske vill ordna resultaten efter någon form av relevans. PostgreSQL tillhandahåller en rankningsfunktion som tar hänsyn till hur ofta frågetermerna visas i dokumentet, hur nära varandra termerna är i dokumentet och hur viktig den del av dokumentet är där de förekommer. Ju bättre matchning, desto högre värde på rankningen. För att beställa efter relevans:</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>Se <a class=\"reference internal\" href=\"#postgresql-fts-weighting-queries\"><span class=\"std std-ref\">Viktning av frågor</span></a> för en förklaring av parametern <code class=\"docutils literal notranslate\"><span class=\"pre\">weights</span></code>.</p>\n<p>Ställ in parametern <code class=\"docutils literal notranslate\"><span class=\"pre\">cover_density</span></code> på <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> för att aktivera täckningsdensitetsrankningen, vilket innebär att närheten mellan matchande söktermer beaktas.</p>\n<p>Ange ett heltal till parametern <code class=\"docutils literal notranslate\"><span class=\"pre\">normalization</span></code> för att styra normalisering av rangordning. Detta heltal är en bitmask, så att du kan kombinera flera beteenden:</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>PostgreSQL-dokumentationen har mer information om <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-RANKING\">olika rangnormaliseringsalternativ</a>.</p>\n</section>\n<section id=\"searchheadline\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Sökhuvud</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>Accepterar ett enda textfält eller ett uttryck, en fråga, en konfiguration och en uppsättning alternativ. Returnerar markerade sökresultat.</p>\n<p>Ställ in parametrarna <code class=\"docutils literal notranslate\"><span class=\"pre\">start_sel</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">stop_sel</span></code> till strängvärdena som ska användas för att linda markerade frågetermer i dokumentet. PostgreSQL: s standardvärden är <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;b&gt;</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;/b&gt;</span></code>.</p>\n<p>Ge heltalsvärden till parametrarna <code class=\"docutils literal notranslate\"><span class=\"pre\">max_words</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">min_words</span></code> för att bestämma de längsta och kortaste rubrikerna. PostgreSQL: s standardvärden är 35 och 15.</p>\n<p>Ge ett heltalsvärde till parametern <code class=\"docutils literal notranslate\"><span class=\"pre\">short_word</span></code> för att kassera ord av denna längd eller mindre i varje rubrik. PostgreSQL: s standard är 3.</p>\n<p>Ställ in parametern <code class=\"docutils literal notranslate\"><span class=\"pre\">highlight_all</span></code> till <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> för att använda hela dokumentet i stället för ett fragment och ignorera parametrarna <code class=\"docutils literal notranslate\"><span class=\"pre\">max_words</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">min_words</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">short_word</span></code>. Det är inaktiverat som standard i PostgreSQL.</p>\n<p>Ge ett heltalsvärde som inte är noll till <code class=\"docutils literal notranslate\"><span class=\"pre\">max_fragments</span></code> för att ställa in det maximala antalet fragment som ska visas. Det är inaktiverat som standard i PostgreSQL.</p>\n<p>Ställ in strängparametern <code class=\"docutils literal notranslate\"><span class=\"pre\">fragment_delimiter</span></code> för att konfigurera avgränsaren mellan fragment. PostgreSQL: s standard är <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;</span> <span class=\"pre\">...</span> <span class=\"pre\">&quot;</span></code>.</p>\n<p>PostgreSQL-dokumentationen har mer information om <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-HEADLINE\">upphighlighting search results</a>.</p>\n<p>Exempel på användning:</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>Se <a class=\"reference internal\" href=\"#postgresql-fts-search-configuration\"><span class=\"std std-ref\">Ändra sökkonfigurationen</span></a> för en förklaring av parametern <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>Ändra sökkonfigurationen<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>Du kan ange attributet <code class=\"docutils literal notranslate\"><span class=\"pre\">config</span></code> till en <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> och <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> för att använda en annan sökkonfiguration. Detta gör det möjligt att använda olika språkparsers och ordböcker som definieras av databasen:</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>Värdet på <code class=\"docutils literal notranslate\"><span class=\"pre\">config</span></code> kan också lagras i en annan kolumn:</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>Viktning av frågor<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>Alla fält kanske inte har samma relevans i en fråga, så du kan ställa in vikter för olika vektorer innan du kombinerar dem:</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>Vikten ska vara en av följande bokstäver: D, C, B, A. Som standard hänvisar dessa vikter till siffrorna <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> respektive <code class=\"docutils literal notranslate\"><span class=\"pre\">1,0</span></code>. Om du vill vikta dem annorlunda, skicka en lista med fyra flyttal till <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> som <code class=\"docutils literal notranslate\"><span class=\"pre\">vikter</span></code> i samma ordning som ovan:</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=\"performance\">\n<h2>Prestanda<a class=\"heading-anchor\" href=\"#performance\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Det krävs ingen särskild databaskonfiguration för att använda någon av dessa funktioner, men om du söker efter mer än några hundra poster kommer du sannolikt att stöta på prestandaproblem. Fulltextsökning är en mer intensiv process än att t.ex. jämföra storleken på ett heltal.</p>\n<p>Om alla fält som du söker på finns i en viss modell kan du skapa ett funktionellt <a class=\"reference internal\" href=\"/sv/5.2/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\">GIN</span></code></a> eller <a class=\"reference internal\" href=\"/sv/5.2/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\">GiST</span></code></a> index som matchar den sökvektor du vill använda. Till exempel:</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>PostgreSQL-dokumentationen har detaljer om att skapa index för fulltextsökning &lt;<a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-tables.html#TEXTSEARCH-TABLES-INDEX\">https://www.postgresql.org/docs/current/textsearch-tables.html#TEXTSEARCH-TABLES-INDEX</a>&gt;`_.</p>\n<section id=\"searchvectorfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">SökVektorField</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>Om detta tillvägagångssätt blir för långsamt kan du lägga till en <code class=\"docutils literal notranslate\"><span class=\"pre\">SearchVectorField</span></code> i din modell. Du måste hålla den befolkad med triggers, till exempel, som beskrivs i <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/textsearch-features.html#TEXTSEARCH-UPDATE-TRIGGERS\">PostgreSQL-dokumentationen</a>. Du kan sedan fråga fältet som om det var en annoterad <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>\n<section id=\"trigram-similarity\">\n<h2>Likhet mellan 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>En annan metod för sökning är trigramlikhet. Ett trigram är en grupp med tre på varandra följande tecken. Förutom uppslagen <a class=\"reference internal\" href=\"/sv/5.2/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>, <a class=\"reference internal\" href=\"/sv/5.2/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> och <a class=\"reference internal\" href=\"/sv/5.2/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> kan du använda ett par andra uttryck.</p>\n<p>För att använda dem måste du aktivera <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/pgtrgm.html\">pg_trgm-tillägget</a> på PostgreSQL. Du kan installera den med hjälp av <a class=\"reference internal\" href=\"/sv/5.2/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> migreringsoperation.</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>Accepterar ett fältnamn eller uttryck och en sträng eller ett uttryck. Returnerar trigramlikheten mellan de två argumenten.</p>\n<p>Exempel på användning:</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\">Trigramordlikhet</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>Accepterar en sträng eller ett uttryck och ett fältnamn eller ett uttryck. Returnerar trigramordlikheten mellan de två argumenten.</p>\n<p>Exempel på användning:</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>Accepterar en sträng eller ett uttryck och ett fältnamn eller ett uttryck. Returnerar den trigramstrikta ordlikheten mellan de två argumenten. Liknar <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>, förutom att den tvingar gränser för utsträckning att matcha ordgränser.</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>Accepterar ett fältnamn eller uttryck och en sträng eller ett uttryck. Returnerar trigramavståndet mellan de två argumenten.</p>\n<p>Exempel på användning:</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>Accepterar en sträng eller ett uttryck och ett fältnamn eller ett uttryck. Returnerar trigramordavståndet mellan de två argumenten.</p>\n<p>Exempel på användning:</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>Accepterar en sträng eller ett uttryck och ett fältnamn eller ett uttryck. Returnerar det trigramstrikta ordavståndet mellan de två argumenten.</p>\n</section>\n</section>","rootId":"full-text-search","toc":[{"title":"Uppslagsordet search","anchor":"the-search-lookup","children":[]},{"title":"SökVektor","anchor":"searchvector","children":[]},{"title":"Sökfråga","anchor":"searchquery","children":[]},{"title":"SearchRank","anchor":"searchrank","children":[]},{"title":"Sökhuvud","anchor":"searchheadline","children":[]},{"title":"Ändra sökkonfigurationen","anchor":"changing-the-search-configuration","children":[]},{"title":"Viktning av frågor","anchor":"weighting-queries","children":[]},{"title":"Prestanda","anchor":"performance","children":[{"title":"SökVektorField","anchor":"searchvectorfield","children":[]}]},{"title":"Likhet mellan trigram","anchor":"trigram-similarity","children":[{"title":"TrigramSimilarity","anchor":"trigramsimilarity","children":[]},{"title":"Trigramordlikhet","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":"API-referens","url":"/sv/5.2/ref/"},{"docname":"ref/contrib/index","title":"contrib paket","url":"/sv/5.2/ref/contrib/"},{"docname":"ref/contrib/postgres/index","title":"django.contrib.postgres","url":"/sv/5.2/ref/contrib/postgres/"}],"prev":{"docname":"ref/contrib/postgres/operations","title":"Migrering av databaser","url":"/sv/5.2/ref/contrib/postgres/operations/"},"next":{"docname":"ref/contrib/postgres/validators","title":"Validerare","url":"/sv/5.2/ref/contrib/postgres/validators/"},"formats":{"html":"/sv/5.2/ref/contrib/postgres/search/","markdown":"/sv/5.2/ref/contrib/postgres/search.md","json":"/sv/5.2/ref/contrib/postgres/search.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/ref/contrib/postgres/search.txt","official":"https://docs.djangoproject.com/sv/5.2/ref/contrib/postgres/search/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}