Rumah  >  Artikel  >  rangka kerja php  >  Panduan pelaksanaan fungsi carian teks penuh ThinkPHP6: data carian komprehensif

Panduan pelaksanaan fungsi carian teks penuh ThinkPHP6: data carian komprehensif

WBOY
WBOYasal
2023-08-14 17:31:482250semak imbas

Panduan pelaksanaan fungsi carian teks penuh ThinkPHP6: data carian komprehensif

Panduan pelaksanaan fungsi carian teks penuh ThinkPHP6: carian data yang komprehensif

Pengenalan
Carian teks penuh ialah teknologi perolehan data penting yang boleh mencari data yang mengandungi kata kunci tertentu dengan cepat. Dalam pembangunan aplikasi web, kami selalunya perlu melaksanakan fungsi carian teks penuh untuk meningkatkan pengalaman pengguna dan kecekapan pertanyaan data. Artikel ini akan memperkenalkan cara menggunakan rangka kerja ThinkPHP6 untuk melaksanakan fungsi carian teks penuh dan menyediakan contoh kod khusus.

  1. Pasang Elasticsearch
    Elasticsearch ialah enjin carian sumber terbuka yang berkuasa yang menyediakan carian teks penuh, carian teragih dan fungsi analisis. Pertama, kita perlu memasang Elasticsearch dan mulakannya. Untuk operasi khusus, sila rujuk dokumentasi rasmi Elasticsearch.
  2. Mengkonfigurasi pangkalan data
    Dalam ThinkPHP6, kami boleh menggunakan pangkalan data untuk menyimpan data yang memerlukan carian teks penuh. Mula-mula, anda perlu mengkonfigurasi maklumat sambungan pangkalan data dalam fail config/database.php. config/database.php文件中配置数据库连接信息。
// 数据库配置
'database'  => [
    // 数据库类型
    'type'     => 'mysql',
    // 服务器地址
    'hostname' => '127.0.0.1',
    // 数据库名
    'database' => 'your_database',
    // 用户名
    'username' => 'your_username',
    // 密码
    'password' => 'your_password',
    // 端口
    'hostport' => '3306',
    // 数据库连接参数
    'params'   => [],
    // 数据库编码默认采用utf8
    'charset'  => 'utf8',
    // 数据库表前缀
    'prefix'   => 'your_prefix_',
],
  1. 安装Elasticsearch插件
    在ThinkPHP6中,我们可以使用topthink/think-elasticsearch扩展来方便地操作Elasticsearch。首先,需要使用Composer安装该扩展:
composer require topthink/think-elasticsearch

然后,需要在config/service.php文件中配置Elasticsearch的连接信息:

// Elasticsearch配置
'elastic' => [
    // Elasticsearch服务器地址
    'host' => '127.0.0.1',
    // Elasticsearch服务器端口
    'port' => 9200,
    // Elasticsearch用户名
    'username' => 'your_username',
    // Elasticsearch密码
    'password' => 'your_password',
    // Elasticsearch索引前缀
    'prefix' => 'your_index_prefix_',
],
  1. 创建索引和模型
    首先,我们需要创建一个索引来存储需要全文搜索的数据。在命令行中执行以下命令:
php think elasticsearch:makeIndex Article

这样就创建了一个名为article的索引。接下来,我们需要在数据库中创建一个与索引对应的数据表,并创建一个模型来操作该数据表。执行以下命令:

php think make:model model/Article

这样就创建了一个名为Article的数据表和模型。在模型类中,我们需要定义Elasticsearch的索引和字段映射关系,以及一些需要全文搜索的字段:

namespace appmodel;

use thinkesModel;

class Article extends Model
{
    // Elasticsearch索引名称
    protected $index = 'article';

    // Elasticsearch映射关系
    protected $mapping = [
        'properties' => [
            'title' => [
                'type' => 'text',
                'analyzer' => 'ik_max_word',
            ],
            'content' => [
                'type' => 'text',
                'analyzer' => 'ik_max_word',
            ],
        ],
    ];

    // 全文搜索字段
    protected $searchFields = ['title', 'content'];
}
  1. 索引数据
    在将数据插入数据库后,我们需要将其索引到Elasticsearch中以便全文搜索。在模型类中,可以使用index方法实现数据索引,例如:
use appmodelArticle;

// 获取要索引的数据
$data = Article::where('status', 1)->select();

// 索引数据
Article::index($data);
  1. 搜索数据
    当我们需要搜索数据时,可以使用模型类的search
  2. use appmodelArticle;
    
    $keyword = 'ThinkPHP';
    $articles = Article::search($keyword)->select();
    
    foreach ($articles as $article) {
        echo $article->title;
        echo $article->content;
    }
      Pasang pemalam Elasticsearch

      Dalam ThinkPHP6, kami boleh menggunakan sambungan topthink/think-elasticsearch untuk mengendalikan Elasticsearch dengan mudah. Pertama, anda perlu menggunakan Composer untuk memasang sambungan:

      rrreee

      Kemudian, anda perlu mengkonfigurasi maklumat sambungan Elasticsearch dalam fail config/service.php:

      rrreee
        Buat indeks dan model
      • Pertama, kita perlu mencipta indeks untuk menyimpan data yang memerlukan carian teks penuh. Jalankan arahan berikut dalam baris arahan:
      • rrreee
      • Ini akan mencipta indeks bernama article. Seterusnya, kita perlu mencipta jadual data yang sepadan dengan indeks dalam pangkalan data dan mencipta model untuk mengendalikan jadual data. Jalankan arahan berikut:
      rrreee🎜Ini mencipta jadual dan model data bernama Article. Dalam kelas model, kita perlu mentakrifkan hubungan pemetaan indeks dan medan Elasticsearch, serta beberapa medan yang memerlukan carian teks penuh: 🎜rrreee
        🎜Data diindeks🎜Selepas memasukkan data ke dalam pangkalan data, kita perlu mengindeksnya ke dalam Elasticsearch untuk carian teks penuh. Dalam kelas model, anda boleh menggunakan kaedah index untuk melaksanakan pengindeksan data, contohnya: 🎜🎜rrreee
          🎜Cari data🎜Apabila kami perlu mencari data, kami boleh menggunakan kaedah search kelas model menjalankan carian teks penuh. Sebagai contoh, cari artikel yang mengandungi kata kunci "ThinkPHP" dalam tajuk: 🎜🎜rrreee🎜Ringkasan🎜Melalui langkah di atas, kami boleh melaksanakan fungsi carian teks penuh dalam rangka kerja ThinkPHP6. Menggunakan Elasticsearch sebagai enjin carian dan bekerjasama dengan operasi pangkalan data ThinkPHP6 boleh merealisasikan carian data yang komprehensif dan meningkatkan kecekapan pertanyaan. Semoga artikel ini dapat membantu anda. 🎜🎜Pautan rujukan: 🎜🎜🎜Dokumentasi rasmi Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 🎜🎜Dokumentasi rasmiThinkPHP6: https://www.kancloud.cn /manual/thinkphp6_0/1037649🎜🎜

      Atas ialah kandungan terperinci Panduan pelaksanaan fungsi carian teks penuh ThinkPHP6: data carian komprehensif. 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