Skip to content

djangodocs

Django 6.0
  • 6.1 current
  • 6.0
  • 5.2 LTS
Gaeilge
  • English
  • Svenska
  • 简体中文
  • Gaeilge
  • Français
  • 日本語
  • Bahasa Indonesia
  • Italiano
  • Português (Brasil)
  • 한국어
  • Español
  • Ελληνικά
  • Polski
Documentation contents
  • Doiciméid Django
  • Ag tosnú
  • Using Django
  • Treoracha conas
  • Ceisteanna Coitianta Django
  • Tagairt API
    • Iarratais
    • Creat seiceála an chórais
    • API tuairimí rang-bhunaithe ionsuite
    • Cosaint clickjacking
    • Pacáistí contrib
      • Suíomh riaracháin Django
      • django.contrib.auth
      • Creat na cineálacha ábhair
      • An aip flatpages
      • GeodJango
      • django.contrib.humanize
      • Creat na teachtaireachtaí
      • django.contrib.postgres
        • Feidhmeanna comhiomlánaithe sonracha PostgreSQL
        • Srianta bunachar sonraí sonracha PostgreSQL
        • Nathanna fiosrúcháin sonracha PostgreSQL
        • Réimsí samhlacha sonracha PostgreSQL
        • Réimsí foirme agus giuirléidí sonracha PostgreSQL
        • Feidhmeanna bunachar sonraí sonracha PostgreSQL
        • Innéacsanna samhail sonracha PostgreSQL
        • Cuardaigh sonracha PostgreSQL
        • Oibríochtaí imirce bunachar
        • Cuardach téacs iomlán
        • Bailíochtóirí
      • An aip athatreoraithe
      • Creat an léarscáileáin
      • An creat “láithreáin”
      • An aip staticfiles`
      • An creat beatha sindiciúcháin
    • Content Security Policy
    • Iarratas ar Trasláithreán Cosaint Fholsaíochta
    • Bunachair sonraí
    • django-admin agus manage.py
    • Eisceachtaí Django
    • Láimhseáil comhad
    • Foirmeacha
    • Logáil
    • Meán-earraí
    • Oibríochtaí Imirce
    • Samhla
    • Paginator
    • Rudaí iarratais agus freagartha
    • SchemaEditor
    • Socruithe
    • Comharthaí
    • Tasks
    • Teimpléid
    • TemplateResponse agus SimpleTemplateResponse
    • Sonraí Unicode
    • Feidhmeanna fóntais ``django.urls ``
    • Feidhmeanna ``django.urls ``le húsáid in URLConfs
    • Úsáideacha Django
    • Bailíochtóirí
    • Radhairc Tógtha
  • Meta-dhoiciméadú agus ilghnéitheacht
  • Gluais
  • Nótaí scaoilte
  • Inmheánacha Django
Irish translation. Contributed by the Django community. 88.6% Help translate
  1. Django 6.0
  2. Tagairt API
  3. Pacáistí contrib
  4. django.contrib.postgres

Cuardach téacs iomlánLink to this heading#

< https://www.postgresql.org/docs/current/textsearch.html>Éascaíonn feidhmeanna an bhunachar sonraí sa mhodúl django.contrib.postgres.search úsáid `inneall cuardaigh téacs iomlán`_ PostgreSQL.

Maidir leis na samplaí sa doiciméad seo, úsáidfimid na samhlacha atá sainmhínithe in:doc: /topics/db/queries.

See also

Le haghaidh forbhreathnú ardleibhéil ar chuardach, féach an:doc: doiciméadú topaic </topics/db/search>.

An cuardach chuardachLink to this heading#

Bealach coitianta chun cuardach téacs iomlán a úsáid ná téarma amháin a chuardach i gcoinne colún amháin sa bhunachar sonraí. Mar shampla:

Python console
>>> Entry.objects.filter(body_text__search="Cheese")
<QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]>

Cruthaíonn sé seo to_tsvector sa bhunachar sonraí ón réimse body_text agus plainto_tsquery ón téarma cuardaigh `Cheise, ag baint úsáide as an gcumraíocht réamhshocraithe cuardaigh bunachar sonraí. Faightear na torthaí tríd an gceist agus an veicteoir a mheaitseáil.

Chun an cuardach search a úsáid, caithfidh django.contrib.postgres' a bheith i d':setting: INSTALLED_APPS.

SearchVectorLink to this heading#

class SearchVector(*expressions, config=None, weight=None)Link to this definition#

Tá sé iontach cuardach i gcoinne réimse amháin ach teorannach. Baineann na cásanna Iontrála atá á chuardach againn le Blog, a bhfuil réimse tagline aige. Chun ceist a dhéanamh i gcoinne an dá réimse, bain úsáid as SearchVector:

Python console
>>> from django.contrib.postgres.search import SearchVector
>>> Entry.objects.annotate(
...     search=SearchVector("body_text", "blog__tagline"),
... ).filter(search="Cheese")
<QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]>

Is féidir leis na hargóintí le SearchVector` a bheith aon:class: ~django.db.Models.Expression nó ainm réimse. Déanfar argóintí iolracha a chomhcheangal le chéile ag baint úsáide as spás ionas go gcuimsíonn an doiciméad cuardaigh iad uile

Is féidir rudaí `SearchVector ``a chomhcheangal le chéile, rud a ligeann duit iad a athúsáid. Mar shampla:

Python console
>>> Entry.objects.annotate(
...     search=SearchVector("body_text") + SearchVector("blog__tagline"),
... ).filter(search="Cheese")
<QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]>

Féach:ref: postgresql-fts-search-cumraí agus:ref: postgresql-fts-weighting-queries le haghaidh míniú ar na paraiméadair config` agus meách`.

CuardcheisteLink to this heading#

class SearchQuery(value, config=None, search_type='plain')Link to this definition#

Aistríonn SearchQuery na téarmaí a sholáthraíonn an t-úsáideoir ina réad fiosrúcháin cuardaigh a dhéanann an bunachar sonraí comparáid le veicteoir cuardaigh. De réir réamhshocraithe, cuirtear na focail go léir a sholáthraíonn an t-úsáideoir tríd na halgartaim spreagtha, agus ansin féachann sé cluichí do na téarmaí go léir mar thoradh air.

Más é search_type plain', arb é an réamhshocrú, déileálfar leis na téarmaí mar eochairfhocail ar leithligh. Más é search_type frase ', déileáiltear leis na téarmaí mar abairt amháin. Más é search_type raw', ansin is féidir leat ceist cuardaigh formáidithe a sholáthar le téarmaí agus oibreoirí. Más é search_type ``websearch', ansin is féidir leat ceist cuardaigh formáidithe a sholáthar, cosúil leis an gceann a úsáideann innill chuardaigh gréasáin. Éilíonn ``'websearch'` PostgreSQL ≥ 11. Léigh PostgreSQL Doiciméid Cuardaigh Téacs Iomlána chun foghlaim faoi dhifríochtaí agus comhréireacht. Samplaí:

Python console
>>> from django.contrib.postgres.search import SearchQuery, Lexeme
>>> SearchQuery("red tomato")  # two keywords
>>> SearchQuery("tomato red")  # same results as above
>>> SearchQuery("red tomato", search_type="phrase")  # a phrase
>>> SearchQuery("tomato red", search_type="phrase")  # a different phrase
>>> SearchQuery("'tomato' & ('red' | 'green')", search_type="raw")  # boolean operators
>>> SearchQuery(
...     "'tomato' ('red' OR 'green')", search_type="websearch"
... )  # websearch operators
>>> SearchQuery(Lexeme("tomato") & (Lexeme("red") | Lexeme("green")))  # Lexeme objects

Is féidir téarmaí SearchQuery a chomhcheangal go loighciúil chun níos mó solúbthachta a sholáthar:

Python console
>>> from django.contrib.postgres.search import SearchQuery
>>> SearchQuery("meat") & SearchQuery("cheese")  # AND
>>> SearchQuery("meat") | SearchQuery("cheese")  # OR
>>> ~SearchQuery("meat")  # NOT

Féach:ref: postgresql-fts-search-configuration le haghaidh míniú ar an paraiméadar config.

Changed in Django 6.0

Lexeme objects were added.

SearchrankLink to this heading#

class SearchRank(vector, query, weights=None, normalization=None, cover_density=False)Link to this definition#

Go dtí seo, tá na torthaí ar ais againn ar a bhfuil aon mheaitseáil idir an veicteoir agus an cheist indéanta. Is dócha gur mhaith leat na torthaí a ordú de réir ábharthachta de chineál éigin. Soláthraíonn PostgreSQL feidhm rangú a chuireann san áireamh cé chomh minic a bhíonn na téarmaí fiosrúcháin le feiceáil sa doiciméad, cé chomh gar dá chéile atá na téarmaí sa doiciméad, agus cé chomh tábhachtach is atá an chuid den doiciméad ina dtarlaíonn siad. An níos fearr an cluiche, is airde luach an chéim. Chun ordú de réir ábharthachta:

Python console
>>> from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector
>>> vector = SearchVector("body_text")
>>> query = SearchQuery("cheese")
>>> Entry.objects.annotate(rank=SearchRank(vector, query)).order_by("-rank")
<QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]>

Féach:ref: postgresql-fts-weighting-queries le haghaidh míniú ar an bparaiméadar ``meáchain ``.

Socraigh an paraiméadar cover_density` go True` chun rangú an dlús clúdaigh a chumasú, rud a chiallaíonn go gcuirtear cógasacht na dtéarmaí ceisteanna meaitseála san áireamh.

Cuir sláimhir ar fáil don pharaiméadar ``normalization` chun normalú céim a rialú. Is masc beagán é an sláimhir seo, ionas gur féidir leat iompraíochtaí iolracha a chomhcheangal:

Python console
>>> from django.db.models import Value
>>> Entry.objects.annotate(
...     rank=SearchRank(
...         vector,
...         query,
...         normalization=Value(2).bitor(Value(4)),
...     )
... )

Tá tuilleadh sonraí ag doiciméadú PostgreSQL faoi `roghanna normalú céim éagsúla `_.

Ceannlíne chuardachaLink to this heading#

class SearchHeadline(expression, query, config=None, start_sel=None, stop_sel=None, max_words=None, min_words=None, short_word=None, highlight_all=None, max_fragments=None, fragment_delimiter=None)Link to this definition#

Glacann sé le réimse téacs amháin nó abairt, ceist, cumraíocht, agus tacar roghanna. Tuairisceáin aibhsithe ar thorthaí

Socraigh na paraiméadair start_sel agus stop_sel chuig na luachanna teaghrán atá le húsáid chun téarmaí fiosrúcháin aibhsithe sa doiciméad a fhilleadh. <b>Is iad réamhshocruithe PostgreSQL ná ```` agus ````.</b>

Cuir luachanna sláimhir ar fáil do na paraiméadair max_words agus min_words chun na ceannlínte is faide agus is giorra a chinneadh. Is iad réamhshocruithe PostgreSQL ná 35 agus 15.

Cuir luach sláimhir ar fáil don pharaiméadar short_word chun focail den fhad seo nó níos lú a dhiúscairt i ngach ceanncheannlíne. Is é réamhshocrú PostgreSQL 3.

Socraigh an paraiméadar highlight_all go True chun an doiciméad iomlán a úsáid in ionad blúire agus neamhaird a dhéanamh ar pharaiméadair max_words, min_words`, agus short_word. Tá sé sin díchumasaithe de réir réamhshocraithe i PostgreSQL.

Cuir luach sláimhir neamh-nialasach ar fáil don max_fragments chun an líon uasta na mblúirí atá le taispeáint a shocrú. Tá sé sin díchumasaithe de réir réamhshocraithe i PostgreSQL.

Socraigh an paraiméadar teaghrán fragment_delimiter` chun an teorannaitheoir idir blúirí a chumrú. Is é réamhshocrú PostgreSQL ná ”... “.

Tá tuilleadh sonraí ag doiciméadú PostgreSQL maidir le `aird a tharraingt ar thorthaí cuardaigh `_.

Sampla úsáide:

Python console
>>> from django.contrib.postgres.search import SearchHeadline, SearchQuery
>>> query = SearchQuery("red tomato")
>>> entry = Entry.objects.annotate(
...     headline=SearchHeadline(
...         "body_text",
...         query,
...         start_sel="<span>",
...         stop_sel="</span>",
...     ),
... ).get()
>>> print(entry.headline)
Sandwich with <span>tomato</span> and <span>red</span> cheese.

Féach:ref: postgresql-fts-search-configuration le haghaidh míniú ar an paraiméadar config.

Cumraíocht an chuardaigh a athrúLink to this heading#

Is féidir leat an tréith config a shonrú le a:class: searchVector agus:class: searchQuery chun cumraíocht cuardaigh difriúil a úsáid. Ligeann sé seo parsálaí agus foclóirí teanga éagsúla a úsáid mar a shainmhíníonn an bunachar

Python console
>>> from django.contrib.postgres.search import SearchQuery, SearchVector
>>> Entry.objects.annotate(
...     search=SearchVector("body_text", config="french"),
... ).filter(search=SearchQuery("œuf", config="french"))
<QuerySet [<Entry: Pain perdu>]>

D'fhéadfaí luach config` a stóráil i gcolún eile freisin:

Python console
>>> from django.db.models import F
>>> Entry.objects.annotate(
...     search=SearchVector("body_text", config=F("blog__language")),
... ).filter(search=SearchQuery("œuf", config=F("blog__language")))
<QuerySet [<Entry: Pain perdu>]>

Fiosruithe meáchainLink to this heading#

B'fhéidir nach mbeidh an t-ábharthacht chéanna ag gach réimse i gceist, ionas gur féidir leat meáchain veicteoirí éagsúla a shocrú sula gcomhcheanglaíonn tú iad:

Python console
>>> from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector
>>> vector = SearchVector("body_text", weight="A") + SearchVector(
...     "blog__tagline", weight="B"
... )
>>> query = SearchQuery("cheese")
>>> Entry.objects.annotate(rank=SearchRank(vector, query)).filter(rank__gte=0.3).order_by(
...     "rank"
... )

Ba chóir go mbeadh an meáchan ar cheann de na litreacha seo a leanas: D, C, B, A. De réir réamhshocraithe, tagraíonn na meáchain seo do na huimhreacha 0.1, 0.2`, 0.4`, agus 1.0, faoi seach. Más mian leat iad a mheáchan ar bhealach difriúil, cuir liosta de cheithre snámh chuig: class: searchRank mar Weights san ord céanna thuas:

Python console
>>> rank = SearchRank(vector, query, weights=[0.2, 0.4, 0.6, 0.8])
>>> Entry.objects.annotate(rank=rank).filter(rank__gte=0.3).order_by("-rank")

LexemeLink to this heading#

New in Django 6.0

class Lexeme(value, output_field=None, *, invert=False, prefix=False, weight=None)Link to this definition#

Lexeme objects allow search operators to be safely used with strings from an untrusted source. The content of each lexeme is escaped so that any operators that may exist in the string itself will not be interpreted.

You can combine lexemes with other lexemes using the & and | operators and also negate them with the ~ operator. For example:

Python console
>>> from django.contrib.postgres.search import SearchQuery, SearchVector, Lexeme
>>> vector = SearchVector("body_text", "blog__tagline")
>>> Entry.objects.annotate(search=vector).filter(
...     search=SearchQuery(Lexeme("fruit") & Lexeme("dessert"))
... )
<QuerySet [<Entry: Apple Crumble Recipes>, <Entry: Banana Split Recipes>]>
Python console
>>> Entry.objects.annotate(search=vector).filter(
...     search=SearchQuery(Lexeme("fruit") & Lexeme("dessert") & ~Lexeme("banana"))
... )
<QuerySet [<Entry: Apple Crumble Recipes>]>

Lexeme objects also support term weighting and prefixes:

Python console
>>> Entry.objects.annotate(search=vector).filter(
...     search=SearchQuery(Lexeme("Pizza") | Lexeme("Cheese"))
... )
<QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]>
>>> Entry.objects.annotate(search=vector).filter(
...     search=SearchQuery(Lexeme("Pizza") | Lexeme("Cheese", weight="A"))
... )
<QuerySet [<Entry: Pizza recipes>]>
>>> Entry.objects.annotate(search=vector).filter(
...     search=SearchQuery(Lexeme("za", prefix=True))
... )
<QuerySet []>

feidhmíochtLink to this heading#

Ní gá cumraíocht bunachar sonraí speisialta chun aon cheann de na feidhmeanna seo a úsáid, áfach, má tá níos mó ná cúpla céad taifead á chuardach agat, is dócha go mbeidh fadhbanna feidhmíochta ort. Is próiseas níos déine é cuardach téacs iomlán ná comparáid a dhéanamh idir méid sláimhir, mar shampla.

Sa chás go bhfuil na réimsí go léir a bhfuil tú ag fiosrú orthu laistigh de mhúnla áirithe amháin, is féidir leat inné <django.contrib.postgres.indexes.GinIndex><django.contrib.postgres.indexes.GistIndex>acs feidhmiúil:class: GIN `nó: class: `GIST a chruthú a oireann leis an veicteoir cuardaigh is mian leat a úsáid. Mar shampla:

Code
GinIndex(
    SearchVector("body_text", "headline", config="english"),
    name="search_vector_idx",
)

The PostgreSQL docs has details on creating indexes for full text search.

SearchVectorFieldLink to this heading#

class SearchVectorFieldLink to this definition#

Má éiríonn an cur chuige seo ró-mhall, is féidir leat SearchVectorField a chur le do mhúnla. Beidh ort é a choinneáil daonra le spreagthóirí, mar shampla, mar a thuairiscítear sa doiciméadú PostgreSQL. Ansin is féidir leat an réimse a cheistiú amhail is dá mba “SearchVector” anótáilte é:

Python console
>>> Entry.objects.update(search_vector=SearchVector("body_text"))
>>> Entry.objects.filter(search_vector="cheese")
<QuerySet [<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]>

Using GeneratedFieldLink to this heading#

An alternative method is to use a GeneratedField, which has PostgreSQL maintain the column rather than a trigger:

Code
from django.contrib.postgres.indexes import GinIndex
from django.contrib.postgres.search import SearchVector, SearchVectorField
from django.db import models


class Entry(models.Model):
    headline = models.CharField(max_length=255)
    body_text = models.TextField()

    search_vector = models.GeneratedField(
        expression=SearchVector("headline", weight="A", config="english")
        + SearchVector("body_text", weight="B", config="english"),
        output_field=SearchVectorField(),
        db_persist=True,
    )

    class Meta:
        indexes = [GinIndex(fields=["search_vector"])]

Cosúlacht TrigramLink to this heading#

Cur chuige eile maidir le cuardach is ea cosúlacht trigram. Is grúpa de thrí charachtar as a chéile é trigram. Chomh maith leis na:lookup: trigram_similar, :lookup: trigram_word_similar, agus:lookup: trigram_strict_word_similar cuardaigh, is féidir leat cúpla abairt eile a úsáid.

< https://www.postgresql.org/docs/current/pgtrgm.html>Chun iad a úsáid, ní mór duit an síneadh pg_trgm `_ a ghníomhachtú ar PostgreSQL. Is féidir leat é a shuiteáil ag baint úsáide as an oibríocht imirce:class: `~django.contrib.postgres.operations.TrigramExtension.

``Trigramchosúlacht ``Link to this heading#

class TrigramSimilarity(expression, string, **extra)Link to this definition#

Glacann sé le hainm réimse nó léiriú, agus teaghrán nó abairt. Tugann sé an chosúlacht trigram idir an dá argóint ar ais.

Sampla úsáide:

Python console
>>> from django.contrib.postgres.search import TrigramSimilarity
>>> Author.objects.create(name="Katy Stevens")
>>> Author.objects.create(name="Stephen Keats")
>>> test = "Katie Stephens"
>>> Author.objects.annotate(
...     similarity=TrigramSimilarity("name", test),
... ).filter(
...     similarity__gt=0.3
... ).order_by("-similarity")
<QuerySet [<Author: Katy Stevens>, <Author: Stephen Keats>]>

``Tríghrambhóthaíocht ``Link to this heading#

class TrigramWordSimilarity(string, expression, **extra)Link to this definition#

Glacann sé le sreang nó abairt, agus ainm réimse nó léiriú. Filleann sé an chosúlacht focal trigram idir an dá argóint.

Sampla úsáide:

Python console
>>> from django.contrib.postgres.search import TrigramWordSimilarity
>>> Author.objects.create(name="Katy Stevens")
>>> Author.objects.create(name="Stephen Keats")
>>> test = "Kat"
>>> Author.objects.annotate(
...     similarity=TrigramWordSimilarity(test, "name"),
... ).filter(
...     similarity__gt=0.3
... ).order_by("-similarity")
<QuerySet [<Author: Katy Stevens>]>

TrigramstrictOrdComhoilarityLink to this heading#

class TrigramStrictWordSimilarity(string, expression, **extra)Link to this definition#

Glacann sé le sreang nó abairt, agus ainm réimse nó léiriú. Filleann sé an trigram cosúlacht dhian focal idir an dá argóint. Cosúil le:class: TrigramwordSimility () <TrigramWordSimilarity>, ach amháin go gcuireann sé teorainneacha méid teorainneacha focal a mheaitseáil.

TrigramdistanceLink to this heading#

class TrigramDistance(expression, string, **extra)Link to this definition#

Glacann sé le hainm réimse nó léiriú, agus teaghrán nó abairt. Tugann sé an fad trigram idir an dá argóint ar ais.

Sampla úsáide:

Python console
>>> from django.contrib.postgres.search import TrigramDistance
>>> Author.objects.create(name="Katy Stevens")
>>> Author.objects.create(name="Stephen Keats")
>>> test = "Katie Stephens"
>>> Author.objects.annotate(
...     distance=TrigramDistance("name", test),
... ).filter(
...     distance__lte=0.7
... ).order_by("distance")
<QuerySet [<Author: Katy Stevens>, <Author: Stephen Keats>]>

TrigramWorddistanceLink to this heading#

class TrigramWordDistance(string, expression, **extra)Link to this definition#

Glacann sé le sreang nó abairt, agus ainm réimse nó léiriú. Tugann sé an fad focal trigram idir an dá argóint ar ais.

Sampla úsáide:

Python console
>>> from django.contrib.postgres.search import TrigramWordDistance
>>> Author.objects.create(name="Katy Stevens")
>>> Author.objects.create(name="Stephen Keats")
>>> test = "Kat"
>>> Author.objects.annotate(
...     distance=TrigramWordDistance(test, "name"),
... ).filter(
...     distance__lte=0.7
... ).order_by("distance")
<QuerySet [<Author: Katy Stevens>]>

TrigramstrictOrdistanceLink to this heading#

class TrigramStrictWordDistance(string, expression, **extra)Link to this definition#

Glacann sé le sreang nó abairt, agus ainm réimse nó léiriú. Filleann sé an fad focal dian trigram idir an dá argóint.

This page as Markdown JSON

Edit this page on GitHub Official version

PreviousOibríochtaí imirce bunachar NextBailíochtóirí

On this page

  • An cuardach chuardach
  • SearchVector
  • Cuardcheiste
  • Searchrank
  • Ceannlíne chuardacha
  • Cumraíocht an chuardaigh a athrú
  • Fiosruithe meáchain
  • Lexeme
  • feidhmíocht
    • SearchVectorField
    • Using GeneratedField
  • Cosúlacht Trigram
    • ``Trigramchosúlacht ``
    • ``Tríghrambhóthaíocht ``
    • TrigramstrictOrdComhoilarity
    • Trigramdistance
    • TrigramWorddistance
    • TrigramstrictOrdistance

An unofficial rendering of the Django documentation.

Not affiliated with or endorsed by the Django Software Foundation. The documentation is copyright © Django Software Foundation and individual contributors, and is used under the BSD 3-Clause licence. “Django” is a trademark of the Django Software Foundation.

This translation is the work of the Django i18n community, not of this site. Read the official documentation at docs.djangoproject.com.

👋 Jason Cartwright