{"title":"Cari","version":"5.0","locale":"id","docname":"topics/db/search","url":"/id/5.0/topics/db/search/","canonical":"https://djangodocs.dev/id/5.0/topics/db/search/","summary":"Sebuah tugas umum untuk aplikasi jaringan adalah untuk mencari beberapa data dalam basisdata dengan masukan pengguna. Dalam sebuah kasus sederhana, ini dapat…","html":"<h1>Cari<a class=\"heading-anchor\" href=\"#search\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Sebuah tugas umum untuk aplikasi jaringan adalah untuk mencari beberapa data dalam basisdata dengan masukan pengguna. Dalam sebuah kasus sederhana, ini dapat menyaring daftar dari obyek berdasarkan sebuah kategori. Kasus penggunaan lebih rumit mungkin membutuhkan pencarian dengan berat, kategori, penyorotan, banyak bahasa, dan seterusnya. Dokumen ini menjelaskan beberapa dari kemungkinan kasus penggunaan dan alat-alat anda dapat gunakan.</p>\n<p>Kita akan mengacu model sama digunakan dalam <a class=\"reference internal\" href=\"/id/5.0/topics/db/queries/\"><span class=\"doc\">Membuat query</span></a>.</p>\n<section id=\"use-cases\">\n<h2>Kasus Penggunaan<a class=\"heading-anchor\" href=\"#use-cases\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"standard-textual-queries\">\n<h3>Standar permintaan kata demi kata<a class=\"heading-anchor\" href=\"#standard-textual-queries\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Text-based fields have a selection of matching operations. For example, you may\nwish to allow lookup up an author like so:</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\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">name__contains</span><span class=\"o\">=</span><span class=\"s2\">&quot;Terry&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[&lt;Author: Terry Gilliam&gt;, &lt;Author: Terry Jones&gt;]</span>\n</code></pre></div>\n<p>Ini adalah pemecahan sangat rapuh ketika itu membutuhkan pengguna mengetahui substring tepat dari nama penulis. Pendekatan terbaik berupa pencocokan kasus-tidak-peka (<a class=\"reference internal\" href=\"/id/5.0/ref/models/querysets/#std-fieldlookup-icontains\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">icontains</span></code></a>), tetapi ini hanya sedikti lebih baik.</p>\n</section>\n<section id=\"a-database-s-more-advanced-comparison-functions\">\n<h3>Fungsi-fungsi perbandingan tingkat lanjut lebih banyak basisdata<a class=\"heading-anchor\" href=\"#a-database-s-more-advanced-comparison-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Jika anda sedang menggunakan PostgreSQL, Django menyediakan <span class=\"xref std std-doc\">a selection of database specific tools 1</span> untuk mengizinkan anda mengungkit lebih rumit pilihan permintaan. Basisdata lain mempunyai pemilihan berbeda dari alat-alat, kemungkinan melalui plugin atau fungsi ditentukan-pengguna. Django tidak menyertakan dukungan apapun untuk mereka pada saat ini. Kami akan menggunakan beberapa contoh dari PostgreSQL untuk menunjukkan hal dari kegunaan basisdata mungkin dimiliki.</p>\n<aside class=\"admonition-searching-in-other-databases admonition\">\n<p class=\"admonition-title\">Pencarian dalam basisdata lain</p>\n<p>Semua alat-alat pencarian disediakan oleh <a class=\"reference internal\" href=\"/id/5.0/ref/contrib/postgres/#module-django.contrib.postgres\" title=\"django.contrib.postgres: PostgreSQL-specific fields and features\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres</span></code></a> dibangun seluruhnya pada API umum seperti  <span class=\"xref std std-doc\">custom lookups 1</span> dan <span class=\"xref std std-doc\">database functions 2</span>. Bergantung pada basisdata anda, anda harus dapat membangun permintaan untuk mengizinkan API yang mirip. Jika ada hal-hal khususyang tidak dapat dicapai cara ini, harap buka sebuah tiket.</p>\n</aside>\n<p>In the above example, we determined that a case insensitive lookup would be\nmore useful. When dealing with non-English names, a further improvement is to\nuse <a class=\"reference internal\" href=\"/id/5.0/ref/contrib/postgres/lookups/#std-fieldlookup-unaccent\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">unaccented</span> <span class=\"pre\">comparison</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">name__unaccent__icontains</span><span class=\"o\">=</span><span class=\"s2\">&quot;Helen&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[&lt;Author: Helen Mirren&gt;, &lt;Author: Helena Bonham Carter&gt;, &lt;Author: Hélène Joy&gt;]</span>\n</code></pre></div>\n<p>Ini menunjukkan masalah lain, dimana kami sedang mencocokkan terhadap pengejaan berbeda dari nama. Dalam kasus ini kami mempunyai asimetris sekalipun - sebuah pencarian untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">Helen</span></code> akan mengambil <code class=\"docutils literal notranslate\"><span class=\"pre\">Helena</span></code> atau <code class=\"docutils literal notranslate\"><span class=\"pre\">Hélène</span></code>, tetapi bukan kebalikannya. Pilihan lain akan menggunakan perbandingan <a class=\"reference internal\" href=\"/id/5.0/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>, yang membandingkan urutan huruf.</p>\n<p>Sebagai contoh:</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\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">name__unaccent__lower__trigram_similar</span><span class=\"o\">=</span><span class=\"s2\">&quot;Hélène&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[&lt;Author: Helen Mirren&gt;, &lt;Author: Hélène Joy&gt;]</span>\n</code></pre></div>\n<p>Now we have a different problem - the longer name of &quot;Helena Bonham Carter&quot;\ndoesn't show up as it is much longer. Trigram searches consider all\ncombinations of three letters, and compares how many appear in both search and\nsource strings. For the longer name, there are more combinations that don't\nappear in the source string, so it is no longer considered a close match.</p>\n<p>Pilihan benar dari fungsi perbandingan disini tergantung pada kumpulan data tertentu anda, sebagai contoh bahasa digunakan dan jenis dari teks sedang diari Semua contoh-contoh kami telah lihat adalah pada string pendek dimana pengguna mungkin memasukkan sesuatu mendekatkan (dengan meragamkan pengertian) pada sumber data.</p>\n</section>\n<section id=\"document-based-search\">\n<h3>Pencarian berdasarkan-dokumen<a class=\"heading-anchor\" href=\"#document-based-search\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Standard database operations stop being a useful approach when you start\nconsidering large blocks of text. Whereas the examples above can be thought of\nas operations on a string of characters, full text search looks at the actual\nwords. Depending on the system used, it's likely to use some of the following\nideas:</p>\n<ul class=\"simple\">\n<li><p>Mengabaikan &quot;kata berhenti&quot; seperti &quot;a&quot;, &quot;the&quot;, &quot;and&quot;.</p></li>\n<li><p>Menghentikan kata-kata, sehingga &quot;pony&quot; dan &quot;ponies&quot; dianggap sama.</p></li>\n<li><p>Bobot kata-kata berdasarkan pada kriteria berbeda seperti sebagaimana sering mereka muncul dalam teks, atau kepentingan dari bidang-bidang, seperti judul atau katakunci, yang mereka muncul.</p></li>\n</ul>\n<p>Ada banyak cara lain untuk menggunakan perangkat lunak pencarian, beberapa dari paling terkemuka adalah <a class=\"reference external\" href=\"https://www.elastic.co/\">Elastic</a> dan <a class=\"reference external\" href=\"https://solr.apache.org/\">Solr</a>. Ini adalah pemecahan pencarian berdasarkan-dokumen penuh. Untuk menggunakan mereka dengan data dari model-model Django, anda akan butuh lapisan yang menterjemahkan data anda kedalam dokumen tekstual, termasuk acuan-kembali ke id basisdata. Ketika sebuah pencarian menggunakan mesin mengembalikan dokumen tertentu, anda dapat kemudian melihat itu dalam basisdata. Ada beragam pustaka-pustaka pihak-ketiga yang dirancang membantu dengan pengolahan ini.</p>\n<section id=\"postgresql-support\">\n<h4>Dukungan PostgreSQL<a class=\"heading-anchor\" href=\"#postgresql-support\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>PostgreSQL mempunyai penerapan pencarian teks penuh siap pakai sendiri. Selagi tidak sekuat beberapa mesin pencari lain, itu mempunyai keuntungan dari menjadi didalam basisdata anda dan sehingga dapat dengan mudah dipadukan dengan permintaan penghubung lain seperti kategorisasi.</p>\n<p>The <a class=\"reference internal\" href=\"/id/5.0/ref/contrib/postgres/#module-django.contrib.postgres\" title=\"django.contrib.postgres: PostgreSQL-specific fields and features\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres</span></code></a> module provides some helpers to make these\nqueries. For example, a query might select all the blog entries which mention\n&quot;cheese&quot;:</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;Entry: Cheese on Toast recipes&gt;, &lt;Entry: Pizza recipes&gt;]</span>\n</code></pre></div>\n<p>You can also filter on a combination of fields and on related models:</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;blog__tagline&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;body_text&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\">[</span>\n<span class=\"go\">    &lt;Entry: Cheese on Toast recipes&gt;,</span>\n<span class=\"go\">    &lt;Entry: Pizza Recipes&gt;,</span>\n<span class=\"go\">    &lt;Entry: Dairy farming in Argentina&gt;,</span>\n<span class=\"go\">]</span>\n</code></pre></div>\n<p>Lihat dokumen <code class=\"docutils literal notranslate\"><span class=\"pre\">contrib.postgres</span></code> <a class=\"reference internal\" href=\"/id/5.0/ref/contrib/postgres/search/\"><span class=\"doc\">Pencarian teks penuh</span></a> untuk rincian lengkap.</p>\n</section>\n</section>\n</section>","rootId":"search","toc":[{"title":"Kasus Penggunaan","anchor":"use-cases","children":[{"title":"Standar permintaan kata demi kata","anchor":"standard-textual-queries","children":[]},{"title":"Fungsi-fungsi perbandingan tingkat lanjut lebih banyak basisdata","anchor":"a-database-s-more-advanced-comparison-functions","children":[]},{"title":"Pencarian berdasarkan-dokumen","anchor":"document-based-search","children":[{"title":"Dukungan PostgreSQL","anchor":"postgresql-support","children":[]}]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Menggunakan Django","url":"/id/5.0/topics/"},{"docname":"topics/db/index","title":"Model dan basisdata","url":"/id/5.0/topics/db/"}],"prev":{"docname":"topics/db/aggregation","title":"Pengumpulan","url":"/id/5.0/topics/db/aggregation/"},"next":{"docname":"topics/db/managers","title":"Pengelola","url":"/id/5.0/topics/db/managers/"},"formats":{"html":"/id/5.0/topics/db/search/","markdown":"/id/5.0/topics/db/search.md","json":"/id/5.0/topics/db/search.json"},"source":"https://github.com/django/django/blob/stable/5.0.x/docs/topics/db/search.txt","official":"https://docs.djangoproject.com/id/5.0/topics/db/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","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}