Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan ThinkPHP6 untuk melaksanakan carian pembahagian perkataan

Cara menggunakan ThinkPHP6 untuk melaksanakan carian pembahagian perkataan

王林
王林asal
2023-06-20 09:27:521772semak imbas

Dengan kemunculan era data besar, kepentingan enjin carian telah menjadi semakin menonjol. Carian pembahagian perkataan, sebagai kaedah carian biasa, digunakan secara meluas. Jadi, bagaimana untuk melaksanakan carian pembahagian perkataan menggunakan rangka kerja ThinkPHP6? Seterusnya, artikel ini akan memperkenalkan mereka kepada anda satu persatu.

1. Apakah carian pembahagian perkataan?

Carian pembahagian perkataan adalah untuk membahagikan perkataan carian yang ditaip oleh pengguna ke dalam perkataan dan melakukan pemadanan carian berdasarkan hasil selepas pembahagian perkataan. Sebagai contoh, apabila pengguna memasukkan "harga televisyen", sistem akan membahagikannya secara automatik kepada dua kata kunci: "televisyen" dan "harga", dan kemudian mencari. Dengan cara ini, walaupun kata kunci yang dimasukkan tidak lengkap atau salah, sistem boleh memadankannya secara bijak.

2. Bagaimanakah cara menggunakan ThinkPHP6 untuk melaksanakan carian pembahagian perkataan?

  1. Pasang rangka kerja ThinkPHP6

Mula-mula, kita perlu memasang rangka kerja ThinkPHP6 secara setempat. Saya tidak akan pergi ke butiran di sini Anda boleh merujuk kepada dokumentasi rasmi untuk pemasangan.

  1. Pasang pustaka segmentasi perkataan

Dalam rangka kerja ThinkPHP6, kami menggunakan perpustakaan segmentasi perkataan jieba untuk melaksanakan operasi pembahagian perkataan. Jieba ialah perpustakaan pembahagian perkataan bahasa Cina yang biasa digunakan dalam Python Ia menyokong tiga mod pembahagian perkataan: mod tepat, mod penuh dan mod enjin carian. Dalam ThinkPHP6, kita boleh menggunakan perpustakaan sambungan PHP jieba-php untuk membuat panggilan.

Seterusnya, kita perlu memuat turun perpustakaan sambungan jieba-php dan meletakkannya dalam folder lanjutan rangka kerja ThinkPHP6. Langkah-langkah khusus adalah seperti berikut:

1) Muat turun perpustakaan sambungan jieba-php pada GitHub

2) Letakkan folder jieba-php-master yang dimuat turun di bawah folder lanjutan rangka kerja ThinkPHP6

  1. Melaksanakan fungsi carian segmentasi perkataan

Seterusnya, kita boleh mula melaksanakan fungsi carian segmentasi perkataan.

Pertama, tentukan kaedah carian dalam pengawal untuk menerima istilah carian yang dimasukkan oleh pengguna.

public function search()
{
    $keywords = input('keywords');
    $result = [];
    if ($keywords) {
        // TODO: 进行分词搜索操作
    }
    return json($result);
}

Antaranya, kami memperoleh istilah carian yang dimasukkan oleh pengguna melalui fungsi input(), kemudian melakukan operasi carian pembahagian perkataan berdasarkan istilah carian, dan akhirnya mengembalikan hasil dalam format JSON.

Seterusnya, kita boleh mula melaksanakan operasi carian pembahagian perkataan. Langkah-langkah khusus adalah seperti berikut:

1) Perkenalkan perpustakaan pembahagian perkataan jieba

Perkenalkan perpustakaan sambungan jieba-php dalam pengepala fail pengawal carian:

use FukuballJiebaJieba;
use FukuballJiebaPosseg;

2) Untuk istilah carian Jalankan pembahagian perkataan

Dalam kaedah carian, kita boleh menggunakan perpustakaan pembahagian perkataan jieba untuk membahagikan perkataan carian dan menyimpannya dalam tatasusunan. Kod khusus adalah seperti berikut:

Jieba::init();
Posseg::init();

$seg_list = Posseg::cut($keywords);
$search_arr = [];
foreach ($seg_list as $seg) {
    if (strlen($seg['word']) > 1) {//剔除单字关键词
        array_push($search_arr, $seg['word']);
    }
}

Dalam kod ini, perpustakaan pembahagian perkataan jieba mula-mula dimulakan. Kemudian, gunakan fungsi Posseg::cut() untuk membahagikan istilah carian dan menyimpan hasil dalam tatasusunan $seg_list. Akhir sekali, hasil pembahagian perkataan ditapis melalui gelung foreach, hanya kata kunci dengan panjang lebih daripada 1 dikekalkan dan hasilnya disimpan dalam tatasusunan $search_arr.

3) Cari dan padankan

Akhir sekali, kita boleh menggunakan pembina pertanyaan yang disediakan oleh rangka kerja ThinkPHP6 untuk melaksanakan operasi carian dan pemadanan. Kod khusus adalah seperti berikut:

$map[] = ['title', 'like', '%' . $keywords . '%'];
if (!empty($search_arr)) {
    foreach ($search_arr as $keyword) {
        $map[] = ['title', 'like', '%' . $keyword . '%'];
    }
}
$result = Db::table('article')->whereOr($map)->select();

Kod pertama mentakrifkan syarat pertanyaan melalui tatasusunan $map dan menggunakan istilah carian sebagai syarat untuk pemadanan tepat Jika terdapat hasil pembahagian perkataan, hasil pembahagian perkataan adalah juga digunakan sebagai syarat untuk padanan kabur. Akhir sekali, syarat pertanyaan ORed bersama-sama menggunakan fungsi Db::table()->whereOr() dan fungsi select() dipanggil untuk mengembalikan hasil pertanyaan.

Di atas ialah keseluruhan proses menggunakan ThinkPHP6 untuk melaksanakan carian pembahagian perkataan. Sudah tentu, masih terdapat banyak butiran yang perlu diberi perhatian, seperti versi jieba thesaurus, cara hasil carian dipersembahkan, dan lain-lain. Pemikiran dan penyelidikan yang teliti diperlukan semasa proses pelaksanaan kod untuk mendapatkan yang stabil dan cekap. fungsi carian pembahagian perkataan.

Atas ialah kandungan terperinci Cara menggunakan ThinkPHP6 untuk melaksanakan carian pembahagian perkataan. 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