ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6 全文検索機能実装ガイド: 包括的な検索データ

ThinkPHP6 全文検索機能実装ガイド: 包括的な検索データ

WBOY
WBOYオリジナル
2023-08-14 17:31:482266ブラウズ

ThinkPHP6 全文検索機能実装ガイド: 包括的な検索データ

ThinkPHP6 全文検索機能実装ガイド: 包括的な検索データ

はじめに
全文検索は、次の内容を含むアイテムを迅速に検索できる重要なデータ検索テクノロジです。指定されたキーワード データ。 Web アプリケーション開発では、ユーザー エクスペリエンスとデータ クエリの効率を向上させるために、全文検索機能を実装する必要があることがよくあります。この記事では、ThinkPHP6 フレームワークを使用して全文検索機能を実装する方法と、具体的なコード例を紹介します。

  1. Elasticsearch のインストール
    Elasticsearch は、全文検索、分散検索、および分析機能を提供する強力なオープンソース検索エンジンです。まず、Elasticsearchをインストールして起動する必要があります。特定の操作については、Elasticsearch の公式ドキュメントを参照してください。
  2. データベースの構成
    ThinkPHP6 では、データベースを使用して全文検索が必要なデータを保存できます。まず、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 メソッドは全文検索を実行します。たとえば、タイトルにキーワード「ThinkPHP」を含む記事を検索します。
use appmodelArticle;

$keyword = 'ThinkPHP';
$articles = Article::search($keyword)->select();

foreach ($articles as $article) {
    echo $article->title;
    echo $article->content;
}

概要
上記の手順により、ThinkPHP6 フレームワークに全文検索機能を実装できます。検索エンジンとしてElasticsearchを使用し、ThinkPHP6のデータベース操作と連携することで、データの網羅的な検索を実現し、クエリ効率を向上させることができます。この記事があなたのお役に立てば幸いです。

参考リンク:

  • Elasticsearch公式ドキュメント:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
  • ThinkPHP6 公式ドキュメント: https://www.kancloud.cn/manual/thinkphp6_0/1037649

以上がThinkPHP6 全文検索機能実装ガイド: 包括的な検索データの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。