cari
Rumahpembangunan bahagian belakangtutorial phpCarian Cina yang cekap dengan Elasticsearch

Carian Cina Elasticsearch: Penganalisis dan Amalan Terbaik

Analisis dan leksikisasi adalah penting dalam indeks kandungan Elasticsearch, terutamanya ketika berurusan dengan bahasa bukan bahasa Inggeris. Bagi Cina, proses ini lebih rumit kerana ciri -ciri watak -watak Cina dan kekurangan ruang antara kata -kata dan ayat.

Artikel ini membincangkan beberapa penyelesaian untuk menganalisis kandungan Cina dalam Elasticsearch, termasuk penganalisis cina lalai, pemalam PAODING, CJK Analyzer, SmartCN Analyzer dan ICU plug-in, dan menganalisis kelebihan dan kekurangan mereka dan senario yang berkenaan.

Cabaran carian Cina

Watak -watak Cina adalah ideogram yang mewakili perkataan atau morfem (unit yang paling bermakna dalam bahasa). Apabila digabungkan bersama, maknanya akan berubah, mewakili perkataan yang sama sekali baru. Satu lagi kesukaran ialah tidak ada ruang antara kata -kata dan ayat, yang menjadikan sukar bagi komputer untuk mengetahui di mana perkataan bermula dan berakhir.

Walaupun anda hanya menganggap bahasa Mandarin (bahasa Cina rasmi dan orang Cina yang paling banyak digunakan di dunia), terdapat puluhan ribu watak Cina, walaupun anda sebenarnya menulis bahasa Cina, anda hanya perlu tahu tiga hingga empat ribu Watak cina. Sebagai contoh, "Volcano" (Volcano) sebenarnya gabungan dua watak Cina berikut:

  • api: api
  • gunung: gunung

Kata -kata kami mesti cukup pintar untuk mengelakkan memisahkan kedua -dua watak Cina ini, kerana makna mereka berbeza dari ketika mereka dipisahkan.

Kesukaran lain ialah varian ejaan yang digunakan:

  • Cina yang dipermudahkan: kaligrafi
  • Cina tradisional, lebih kompleks dan lebih kaya: Kaedah buku
  • pinyin, bentuk romanisasi mandarin: shū fǎ

Analyzer Cina di Elasticsearch

Pada masa ini, Elasticsearch menyediakan penganalisis Cina berikut:

  • Default Chinese Analyzer, berdasarkan kelas yang tidak disengajakan dalam Lucene 4;
  • plugin, walaupun tidak lagi dikekalkan, didasarkan pada kamus yang sangat baik; paoding
  • Analyzer, yang menghidupkan kandungan;
  • cjk Analyzer, plug-in yang disokong secara rasmi;
  • pemalam ICU dan peranti segmentasi perkataannya.
  • smartcn
  • Penganalisis ini sangat berbeza -beza, dan kami akan membandingkan prestasi mereka dengan perkataan ujian mudah "telefon bimbit". "Telefon bimbit" bermaksud "telefon bimbit", yang terdiri daripada dua watak Cina, yang mewakili "tangan" dan "mudah alih". Perkataan "ji" juga merupakan banyak perkataan lain:
Penerbangan: Tiket Udara

robot: robot
  • pistol mesin: pistol mesin
  • Peluang: Peluang
  • Participle kami tidak dapat memecah watak -watak Cina ini kerana jika saya mencari "telefon bimbit", saya tidak mahu apa -apa dokumentasi mengenai Rambo memiliki pistol mesin.
  • kami akan menguji penyelesaian ini menggunakan API
API yang kuat:

_analyze

  • Default Chinese Analyzer: Ia hanya membahagikan semua watak Cina ke dalam elemen perkataan. Oleh itu, kami mendapat dua elemen leksikal: telefon bimbit dan telefon bimbit. Analyzer standard menghasilkan output yang sama. Oleh itu, Chinese tidak lama lagi dan tidak lama lagi akan digantikan oleh standard dan harus dielakkan.

  • paoding plug-in: Hampir standard industri dan dianggap sebagai penyelesaian yang elegan. Malangnya, plugin untuk Elasticsearch tidak dikekalkan, dan saya hanya boleh menjalankannya pada versi 1.0.1 selepas beberapa pengubahsuaian. (Langkah -langkah pemasangan ditinggalkan, teks asal yang disediakan) Selepas pemasangan, kami mendapat segmen perkataan paoding baru dan dua pengumpul: paoding dan max_word_len. Secara lalai, tidak ada penganalisis awam, jadi kita perlu mengisytiharkan penganalisis baru. (Langkah -langkah konfigurasi ditinggalkan, teks asal disediakan) Kedua -dua konfigurasi memberikan hasil yang baik dengan unsur -unsur leksikal yang jelas dan unik. Ia juga berkelakuan baik apabila berurusan dengan ayat yang lebih kompleks. most_word

  • Analyzer: cjk Penganalisis yang sangat mudah yang hanya menukar teks ke dalam binari. "Telefon bimbit" hanya indeks , yang bagus, tetapi jika kita menggunakan kata -kata yang lebih panjang, seperti "Festival Lantern" (Festival Lantern), dua perkataan akan dihasilkan: Festival Lantern dan Festival Xiao, yang bermaksud "Festival Lantern" dan masing -masing "Festival Xiao". 手机

  • Plug-in: smartcn Sangat mudah dipasang. (Langkah -langkah pemasangan ditinggalkan, teks asal disediakan) Ia memperlihatkan penganalisis baru, serta smartcn segmen perkataan, menggunakan Lucene's smartcn_tokenizer. Ia menggunakan suite kebarangkalian untuk mencari segmentasi perkataan terbaik, menggunakan model Markov tersembunyi dan sejumlah besar teks latihan. Oleh itu, kamus latihan yang cukup baik telah tertanam -contoh -contoh kita adalah berstahan dengan betul. SmartChineseAnalyzer

  • Plugin ICU: Satu lagi plugin rasmi. (Langkah-langkah pemasangan ditinggalkan, teks asal disediakan) Jika anda berurusan dengan mana-mana bahasa bukan bahasa Inggeris, disarankan untuk menggunakan plugin ini. Ia mendedahkan segmen perkataan , serta banyak alat analisis yang kuat seperti icu_tokenizer, icu_normalizer, icu_folding, dan lain -lain. Ia menggunakan kamus Cina dan Jepun yang mengandungi maklumat mengenai kekerapan perkataan untuk menyimpulkan kumpulan watak Cina. Pada "telefon bimbit", semuanya normal dan berfungsi seperti yang diharapkan, tetapi pada "Festival Lantern", dua perkataan akan dihasilkan: Festival Lantern dan Festival - Ini kerana "Festival Lantern" dan "Festival" lebih penting daripada "Festival Lantern ". Biasa. icu_collation

perbandingan hasil (borang yang ditinggalkan, teks asal disediakan)

Dari sudut pandangan saya,

dan paoding mendapat hasil yang terbaik. smartcn Kata participle sangat buruk, chinese agak mengecewakan pada "Festival Lantern", tetapi sangat baik untuk berurusan dengan Cina tradisional. icu_tokenizer

sokongan tradisional Cina

Anda mungkin perlu memproses Cina tradisional dari dokumen atau permintaan carian pengguna. Anda memerlukan langkah normalisasi untuk menukar input tradisional ini ke dalam bahasa Cina moden kerana plugin seperti smartcn atau paoding jangan mengendalikannya dengan betul.

Anda boleh mengendalikannya melalui aplikasi anda, atau cuba menggunakan plugin elasticsearch-analysis-stconvert untuk mengendalikannya secara langsung di Elasticsearch. Ia boleh menukar watak tradisional dan mudah di kedua -dua arah. (Langkah pemasangan ditinggalkan, teks asal telah disediakan)

Penyelesaian terakhir adalah menggunakan cjk: jika anda tidak dapat memasukkan participle dengan betul, anda masih sangat mungkin menangkap dokumentasi yang diperlukan dan kemudian gunakan icu_tokenizer (juga cukup baik) untuk meningkatkan kaitan.

Penambahbaikan selanjutnya

Tidak ada penyelesaian sejagat yang sempurna untuk analisis Elasticsearch, dan Cina tidak terkecuali. Anda mesti menggabungkan dan membina penganalisis anda sendiri berdasarkan maklumat yang telah anda perolehi. Sebagai contoh, saya menggunakan participle cjk dan smartcn pada medan carian, menggunakan pertanyaan berbilang bidang dan multi-perlawanan.

(bahagian FAQ ditinggalkan, teks asal disediakan)

Atas ialah kandungan terperinci Carian Cina yang cekap dengan Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Apakah kaedah terbaik untuk menghantar e -mel menggunakan php?Apakah kaedah terbaik untuk menghantar e -mel menggunakan php?May 08, 2025 am 12:21 AM

Thebestapproachforsendingemailsinphpisusingthephpmaillibraryduetoitsreliability, featureRichness, andeaseofuse.phpmailersupportssmtp, proveddetaileDerrorHandling, membolehkanSendsendingHtmlandPlainteMails, supportsattachments, danStoVeShanCess

Amalan terbaik untuk suntikan ketergantungan dalam phpAmalan terbaik untuk suntikan ketergantungan dalam phpMay 08, 2025 am 12:21 AM

Alasan untuk menggunakan suntikan ketergantungan (DI) ialah ia menggalakkan gandingan longgar, kebolehlihatan, dan pemeliharaan kod. 1) Gunakan pembina untuk menyuntik kebergantungan, 2) Elakkan menggunakan pencari perkhidmatan, 3) Gunakan bekas suntikan ketergantungan untuk menguruskan kebergantungan, 4) meningkatkan kesesuaian melalui suntikan suntikan, 5) Elakkan kebergantungan over-suntikan, 6) Pertimbangkan kesan DI terhadap prestasi.

Petua Penalaan Prestasi PHPPetua Penalaan Prestasi PHPMay 08, 2025 am 12:20 AM

Phpperformancetuningiscrucialbecauseitenhancesspeedandeficiency, whoarevitalforwebapplications.1) cachingwithapcureSdatabaseloadandimprovesresponsetimes.2)

Keselamatan e -mel PHP: Amalan terbaik untuk menghantar e -melKeselamatan e -mel PHP: Amalan terbaik untuk menghantar e -melMay 08, 2025 am 12:16 AM

TthebestpracticesforDailssecureeleynpinceDudududude: 1) usingSecureConfigurationsatiationswithsmtpandStartTartTlSencrryption, 2) vactrentatiatingIsTitionputStopReventInJectaCtAtactaSs, 3) engrypTyptingSensensitiVIdAdAlsHAlSiSsSenSsensSl ,SsengsSenSsensSl ,SsengSiSsSSSsSsSsSsSsSsSsSsSsSsSsSsSsSsSsSsSsSsSsSssSsSsSsSsSsSsSsSsSsSsSsSsSsSsSsSSSSsSSSSSSSSSHAsSsSSSSSHAsSsSengs.)

Bagaimana anda mengoptimumkan aplikasi PHP untuk prestasi?Bagaimana anda mengoptimumkan aplikasi PHP untuk prestasi?May 08, 2025 am 12:08 AM

TooptimizePHPapplicationsforperformance,usecaching,databaseoptimization,opcodecaching,andserverconfiguration.1)ImplementcachingwithAPCutoreducedatafetchtimes.2)Optimizedatabasesbyindexing,balancingreadandwriteoperations.3)EnableOPcachetoavoidrecompil

Apakah suntikan ketergantungan dalam php?Apakah suntikan ketergantungan dalam php?May 07, 2025 pm 03:09 PM

DependencyInjectionPhpisadesignPatternThatenhancesflexibility, Testability, andMaintainabilitybyprovidingExternalDependencyestoclasses.Illowsforloosecoupling, easiertestingthroughmocking, andmodulardesignesign, ButrequirescareFareFingStructures-Inje

Teknik Pengoptimuman Prestasi PHP TerbaikTeknik Pengoptimuman Prestasi PHP TerbaikMay 07, 2025 pm 03:05 PM

Pengoptimuman prestasi PHP boleh dicapai melalui langkah -langkah berikut: 1) Gunakan memerlukan_once atau termasuk_once di bahagian atas skrip untuk mengurangkan bilangan beban fail; 2) Gunakan penyataan preprocessing dan pemprosesan batch untuk mengurangkan bilangan pertanyaan pangkalan data; 3) Konfigurasikan opcache untuk cache opcode; 4) membolehkan dan mengkonfigurasi pengurusan proses pengoptimuman PHP-FPM; 5) Gunakan CDN untuk mengedarkan sumber statik; 6) Gunakan XDEBUG atau Blackfire untuk analisis prestasi kod; 7) Pilih struktur data yang cekap seperti tatasusunan; 8) Tulis kod modular untuk pelaksanaan pengoptimuman.

Pengoptimuman Prestasi PHP: Menggunakan Caching OpcodePengoptimuman Prestasi PHP: Menggunakan Caching OpcodeMay 07, 2025 pm 02:49 PM

OpcodecachingsignificelymprovesphperformanceCachingCompiledCode, reducingservervoadandresponsetimes.1) itstorescompiledphpcodeinmemory, bypassingparsingandcompiling.2)

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular