PostgreSQL

Contoh Pencarian Teks Lengkap PostgreSQL

Contoh Pencarian Teks Lengkap PostgreSQL
Basis data apa pun harus memiliki kemampuan pencarian yang efektif dan serbaguna. Setiap kali mengacu pada database, PostgreSQL adalah ahli dari semua kerajinan. Ini menggabungkan semua hal yang Anda sukai dengan SQL dengan banyak fungsi database non-SQL. Salah satu fungsi Non-SQL ini, seperti pengurutan informasi JSONB, luar biasa, dan Anda bahkan tidak perlu mencoba database lain. Pencarian Teks Lengkap adalah salah satu fitur Non-SQL terbaru yang dimasukkan ke dalam PostgreSQL. Apakah pencarian teks lengkap PostgreSQL berfungsi sepenuhnya, atau apakah Anda menginginkan indeks pencarian yang berbeda?? Jika Anda entah bagaimana dapat mengembangkan pencarian teks lengkap tanpa menambahkan satu sampul kode lagi, itu akan menjadi ide yang fantastis. Anda sudah mengenal pencarian pola di database MySQL MySQL. Jadi, mari kita lihat mereka dulu. Buka shell baris perintah PostgreSQL di sistem komputer Anda. Tulis judul server, nama database, nomor port, nama pengguna, dan kata sandi untuk pengguna tertentu selain opsi default. Jika Anda perlu bekerja keras dengan pertimbangan default, biarkan semua pilihan kosong dan tekan Enter setiap opsi. Saat ini, shell baris perintah Anda siap untuk bekerja.

Untuk memahami konsep pencarian teks lengkap, Anda harus mengingat kembali pengetahuan pencarian pola melalui kata kunci LIKE. Jadi, mari kita asumsikan tabel 'orang' di database 'tes' dengan catatan berikut di dalamnya.

>> PILIH * DARI orang;

Misalkan Anda ingin mengambil catatan tabel ini, di mana kolom 'nama' memiliki karakter 'i' di salah satu nilainya. Coba kueri SELECT di bawah ini saat menggunakan klausa LIKE di command-Shell. Dari output di bawah, Anda dapat melihat bahwa kami hanya memiliki 5 record untuk karakter khusus ini 'i' di kolom 'nama'.

>> SELECT * FROM person WHERE name LIKE '%i%';

Penggunaan sektor TV:

Terkadang tidak ada gunanya menggunakan Kata Kunci LIKE untuk melakukan pencarian pola cepat, meskipun kata itu ada. Mungkin Anda akan mempertimbangkan untuk menggunakan ekspresi standar, dan meskipun ini adalah alternatif yang layak, ekspresi reguler kuat dan lamban. Memiliki vektor prosedural untuk seluruh kata dalam teks, deskripsi vernakular dari kata-kata itu, adalah cara yang jauh lebih efisien untuk mengatasi masalah ini. Konsep pencarian teks lengkap dan tipe data tsvector dibuat untuk menanggapinya. Ada dua metode di PostgreSQL yang melakukan apa yang kita inginkan:

Contoh 01:

Mari kita mulai dengan ilustrasi sederhana membuat vektor. Misalkan Anda ingin membuat vektor untuk string: “Beberapa orang memiliki rambut cokelat keriting melalui penyikatan yang benar.”. Jadi, Anda harus menulis fungsi to_tvsector() bersama dengan kalimat ini di dalam tanda kurung dari kueri SELECT seperti yang ditambahkan di bawah ini. Dari output di bawah, Anda dapat melihatnya akan menghasilkan vektor referensi (posisi file) untuk setiap token, dan juga di mana istilah dengan sedikit konteks, seperti artikel (the) dan konjungsi (dan, atau), sengaja diabaikan.

>> SELECT to_tsvector('Beberapa orang memiliki rambut coklat keriting melalui penyikatan yang benar');

Contoh 02:

Asumsikan Anda memiliki dua dokumen dengan beberapa data di keduanya. Untuk menyimpan data ini, sekarang kita akan menggunakan contoh nyata pembuatan token. Asumsikan Anda telah membuat tabel 'Data' di 'tes' database Anda dengan beberapa kolom di dalamnya menggunakan kueri CREATE TABLE di bawah ini. Jangan lupa untuk membuat kolom tipe TVSECTOR bernama 'token' di dalamnya. Dari output di bawah ini, Anda dapat melihat tabel yang telah dibuat.

>> CREATE TABLE Data (Id SERIAL PRIMARY KEY, info TEXT, token TSVECTOR);

Sekarang, giliran kita untuk menambahkan data keseluruhan dari kedua dokumen dalam tabel ini. Jadi coba perintah INSERT di bawah ini di shell baris perintah Anda untuk melakukannya. Akhirnya record dari kedua dokumen tersebut telah berhasil ditambahkan ke tabel 'Data'.

>> INSERT INTO Data (info) VALUES ('Dua kesalahan tidak akan pernah bisa membuat satu benar.'), ('Dialah yang bisa bermain sepak bola.'), ('Dapatkah saya berperan dalam hal ini??'), ('Rasa sakit di dalam diri seseorang tidak dapat dipahami'), ('Bawa buah persik dalam hidupmu);

Sekarang Anda harus menjajah kolom token dari kedua dokumen dengan vektor spesifiknya specific. Pada akhirnya, kueri UPDATE sederhana akan mengisi kolom token dengan vektor yang sesuai untuk setiap file. Jadi, Anda harus menjalankan kueri yang dinyatakan di bawah ini di shell perintah untuk melakukannya. Outputnya menunjukkan bahwa pembaruan akhirnya dibuat.

>> UPDATE Data f1 SET token = to_tsvector(f1.info) DARI Data f2;

Sekarang setelah kita memiliki semuanya, mari kembali ke ilustrasi kita tentang "bisa satu" dengan pindaian. Untuk to_tsquery dengan operator AND, seperti yang dikatakan sebelumnya, tidak ada perbedaan antara lokasi file dalam file seperti yang ditunjukkan dari output yang dinyatakan di bawah ini.

>> SELECT Id, info FROM Data WHERE token @@ to_tsquery('can & one');

Contoh 04:

Untuk menemukan kata-kata yang "di sebelah" satu sama lain, kami akan mencoba kueri yang sama dengan '<->'operator'. Perubahan ditampilkan pada output di bawah ini.

>> SELECT Id, info FROM Data WHERE token @@ to_tsquery('can <-> satu');

Berikut adalah contoh tidak ada kata langsung di sebelah yang lain.

>> PILIH Id, info FROM Data WHERE token @@ to_tsquery('one <-> rasa sakit');

Contoh 05:

Kami akan menemukan kata-kata yang tidak langsung bersebelahan dengan menggunakan angka di operator jarak untuk referensi jarak. Kedekatan antara 'bawa' dan 'kehidupan adalah 4 kata selain dari gambar yang ditampilkan.

>> PILIH * FROM Data WHERE token @@ to_tsquery('bring <4> kehidupan');

Untuk memeriksa kedekatan antara kata-kata selama hampir 5 kata ditambahkan di bawah ini.

>> PILIH * FROM Data WHERE token @@ to_tsquery('salah <5> Baik');

Kesimpulan:

Terakhir, Anda telah melakukan semua contoh pencarian teks lengkap yang sederhana dan rumit menggunakan operator dan fungsi To_tvsector dan to_tsquery.

Petakan ulang tombol mouse Anda secara berbeda untuk perangkat lunak yang berbeda dengan Kontrol Tombol X-Mouse
Mungkin Anda membutuhkan alat yang dapat membuat kontrol mouse Anda berubah dengan setiap aplikasi yang Anda gunakan. Jika demikian, Anda dapat mencob...
Ulasan Mouse Nirkabel Microsoft Sculpt Touch
Saya baru-baru ini membaca tentang Microsoft Sculpt Touch mouse nirkabel dan memutuskan untuk membelinya. Setelah menggunakannya untuk sementara waktu...
Trackpad dan Mouse Pointer di Layar AppyMouse untuk Tablet Windows
Pengguna tablet sering melewatkan penunjuk mouse, terutama ketika mereka terbiasa menggunakan laptop. Layar sentuh Smartphone dan tablet hadir dengan ...