Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 4068|Jawab: 2

[Sumber] [Pertarungan praktis] Gunakan Lucene.Net + Jieba.NET untuk membangun pencarian di tempat yang ringan

[Salin tautan]
Dipaparkan pada 2023-10-29 18:05:43 | | | |
Persyaratan: Pencarian teks lengkap di situs adalah fungsi yang umum digunakan, dan biasanya digunakan berdasarkan ituPencarian ElastisSolrPenerapan dan pengembangan, dan sekarang dua yang baru telah dirilisRedisSearchMeiliSearchMesin pencari, dua yang pertama lebih berat, meskipun dua yang terakhir tidak seberat dua yang pertama, tetapi masih perlu menerapkan layanan dependen, artikel ini menggunakan Lucene.Net + Jieba.NET untuk membangun pencarian di tempat yang ringan.

Lucene.Net

Lucene.Net adalah port .NET dari Lucene dan merupakan kit pengembangan mesin pencari teks lengkap sumber terbuka, yaitu bukan mesin pencari teks lengkap lengkap, tetapi arsitektur mesin pencari teks lengkap yang menyediakan mesin kueri lengkap dan mesin pengindeksan.

Situs:Login hyperlink terlihat.
Alamat GitHub:Login hyperlink terlihat.

Jieba.NET

Jieba.NET adalah jieba Cina participle. Versi .NET (implementasi C#). Ini dapat melakukan fungsi seperti segmentasi kata, anotasi bagian dari ucapan, ekstraksi kata kunci, dll. untuk teks Cina, dan mendukung kamus khusus.

Alamat GitHub:Login hyperlink terlihat.

Pertama, mari kita lihat renderingnya:




Sesuaikan Analyzer

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream di Lucene TokenStream: Aliran yang diperoleh setelah tokenizer diproses. Aliran ini menyimpan berbagai informasi tentang segmentasi kata, yang dapat diperoleh secara efektif melalui TokenStream. Berikut ini adalah proses konversi aliran file menjadi TokenStream Pertama, gunakan Tokenizer untuk mengelompokkan kata-kata, tokenizer yang berbeda memiliki tokenzier yang berbeda, setelah tokenzier dipisahkan, filter data yang telah dibagi menjadi kata-kata melalui TokenFilter, seperti kata henti. Setelah pemfilteran, gabungkan semua data ke dalam TokenStream.

Referensi:

Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.


Untuk menyesuaikan penganalisis Lucene berdasarkan Jieba.NET, referensi pertama adalah sebagai berikut:



Lihat langsung ke paket Lucene.Net.Analysis.Common, karena Lucene.Net.Analysis.Common mengandalkan paket Lucene.Net untuk diunduh secara otomatis.

Buat JiebaTokenizer.cs baru dengan kode berikut:

Buat JiebaAnalyzer.cs baru dengan kode berikut:



Lucene.Net Membuat dokumen dan pencarian baru

Tambahkan data dari situs web ke Lucene secara teratur atau dipicu, dan Lucene menyimpan dokumen di disk fisik melalui penganalisis, lalu memanggil antarmuka pencarian untuk menemukannya.

Kode kelas bantuan LuceneHelper adalah sebagai berikut:



Penyimpanan toko

Store.YES: Ini tidak hanya akan mengindeks data, tetapi juga menyimpan data, sehingga hasil pencarian dapat mengembalikan informasi bidang.
Store.NO: Hanya data yang akan diindeks, dan data tidak akan disimpan, dan hasil pencarian tidak dapat memperoleh informasi bidang ini.Menghemat ruang disk

Seperti yang ditunjukkan di bawah ini:




Jenis bidang bidang

Jenis bidang dalam Lucene.Net adalah Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Silakan gunakan tipe data yang sesuai dengan situasi Anda.

TextField vs. StringField

TextField pasti akan dileksikalisasi, StringField tidak akan melakukan analisis leksikal dari konten yang disimpan dalam dokumen, mengacu:Login hyperlink terlihat.

Terjadi pencarian majemuk


Ada 6 kombinasi berikut ini:

1. MUST dan MUST: Dapatkan persimpangan klausa kueri berturut-turut.
2. MUST dan MUST_NOT: Menunjukkan bahwa hasil pencarian klausa kueri yang sesuai dengan MUST_NOT tidak dapat disertakan dalam hasil kueri.
3. HARUS dan MUST_NOT: Ketika digunakan terus menerus, fungsinya sama dengan MUST dan MUST_NOT.
4. Ketika SHOULD dan MUST digunakan bersamaan, hasilnya adalah hasil pencarian klausa MUST, tetapi SHOULD dapat memengaruhi penyortiran.
5. HARUS dan SEHARUSNYA: Menunjukkan hubungan antara "atau", dan hasil pencarian akhir adalah penyatuan semua klausa pencarian.
6.MUST_NOT dan MUST_NOT: tidak berarti, pengambilan tanpa hasil.


Jalankan proyek

Pada titik ini, Anda dapat memulai proyek untuk menambahkan, memperbarui, dan mencari kode antarmuka sebagai berikut:


Kesalahan dapat dilaporkan sebagai berikut:

Pengecualian yang tidak ditangani terjadi saat memproses permintaan.
DirectoryNotFoundException: Could not find a part of the path 'C:\Users\itsvse_nuc11\source\repos\DiscuzSearch\DiscuzSearch\bin\Debug\net6.0\Resources\prob_trans.json'.
Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(string fullPath, mode FileMode, akses FileAccess, berbagi FileShare, opsi FileOptions)

TypeInitializationException: The type initializer for 'JiebaNet.Segmenter.JiebaSegmenter' threw an exception.

jieba.net Setelah penginstalan, Anda dapat melihat direktori Sumber Daya di direktori packages\jieba.NET, yang berisi kamus dan file data lain yang diperlukan untuk menjalankan jieba.NET, dan metode konfigurasi termudah adalah menyalin seluruh direktori Sumber Daya ke direktori tempat rakitan berada, sehingga nilai konfigurasi default bawaan akan digunakan jieba.NET.

C:\Users\%USERPROFILE%\.nuget\packages\jieba.net\0.42.2\Resources

JiebaNet perlu menambahkan folder konfigurasi, kodenya adalah sebagai berikut:

Pengujian ini membuat 500 dokumen baru (terkait dengan situasi aktual saya, hanya untuk referensi), dan disk menempati 119KB, seperti yang ditunjukkan pada gambar di bawah ini:



(Akhir)




Mantan:Ikuti akun resminya dan dapatkan "kode undangan" secara gratis
Depan:.NET mengubah string varbinary database menjadi array byte[]
 Tuan tanah| Dipaparkan pada 2023-10-29 18:10:40 |
Elasticsearch (ES) gagal menulis data ke solusi kesalahan
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch secara otomatis membersihkan indeks untuk mengosongkan ruang disk
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x menggunakan xpack untuk autentikasi keamanan
https://www.itsvse.com/thread-10206-1-1.html

Menyebarkan layanan Elasticsearch menggunakan Docker
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch menggunakan elasticdump untuk mencadangkan dan memigrasikan data
https://www.itsvse.com/thread-10143-1-1.html

Instal tutorial elasticsearch 7.10.2 versi mandiri di Windows
https://www.itsvse.com/thread-9962-1-1.html

Pengantar konfigurasi sorotan pencarian Elasticsearch
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Menggunakan debugging Elasticsearch untuk melihat informasi permintaan dan respons
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Data Jaeger tetap ada di elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch (ES) mereplikasi indeks klon
https://www.itsvse.com/thread-9545-1-1.html

Kesehatan kluster Elasticsearch(ES): status kuning (6 dari 7)
https://www.itsvse.com/thread-9544-1-1.html

Kesehatan kluster Elasticsearch(ES): merah Analisis kegagalan
https://www.itsvse.com/thread-9543-1-1.html

Informasi Geolokasi Java di ElasticSearch (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[bidang harus [lat], [lon] atau [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

elasticsearch-mappingJenis bidang
https://www.itsvse.com/thread-6436-1-1.html

Elasticsearch:No handler for type [string] declared on field[XX]的解决办法
https://www.itsvse.com/thread-6420-1-1.html

【Tindakan Praktis】Tutorial instalasi Kibana untuk Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Koordinat geografis keluarga fitur lanjutan Elasticsearch
https://www.itsvse.com/thread-6399-1-1.html

Kueri majemuk ElasticSearch harus, seharusnya, must_not digunakan
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch menghapus dan mengindeks semua data dokumen
https://www.itsvse.com/thread-6321-1-1.html

[Pertempuran aktual]. net/c# Hubungi pencarian elasticsearch melalui NEST [dengan kode sumber]
https://www.itsvse.com/thread-6294-1-1.html

Penyebab dan solusi untuk Elasticsearch unassigned_shards simpul tunggal
https://www.itsvse.com/thread-6193-1-1.html

Tutorial menginstal elasticsearch-analysis-ik di elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Instal plugin elasticsearch-6.5.2 elasticsearch-head
https://www.itsvse.com/thread-6190-1-1.html

Tutorial instalasi dan penyebaran Centos 7 elasticsearch-6.5.2
https://www.itsvse.com/thread-6173-1-1.html

Pemilihan mesin pencari: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Tuan tanah| Dipaparkan pada 2023-11-5 21:27:45 |
Alamat pengujian pencarian:https://www.itsvse.com/blog_xzz.html
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com