Maison >cadre php >PensezPHP >Guide de mise en œuvre de la fonction de recherche en texte intégral ThinkPHP6 : données de recherche complètes

Guide de mise en œuvre de la fonction de recherche en texte intégral ThinkPHP6 : données de recherche complètes

WBOY
WBOYoriginal
2023-08-14 17:31:482311parcourir

Guide de mise en œuvre de la fonction de recherche en texte intégral ThinkPHP6 : données de recherche complètes

Guide de mise en œuvre de la fonction de recherche en texte intégral ThinkPHP6 : recherche complète de données

Introduction
La recherche en texte intégral est une technologie de récupération de données importante qui peut trouver rapidement des données contenant des mots-clés spécifiés. Dans le développement d'applications Web, nous devons souvent implémenter des fonctions de recherche en texte intégral pour améliorer l'expérience utilisateur et l'efficacité des requêtes de données. Cet article expliquera comment utiliser le framework ThinkPHP6 pour implémenter la fonction de recherche en texte intégral et fournira des exemples de code spécifiques.

  1. Installer Elasticsearch
    Elasticsearch est un puissant moteur de recherche open source qui fournit des fonctions de recherche en texte intégral, de recherche distribuée et d'analyse. Tout d’abord, nous devons installer Elasticsearch et le démarrer. Pour des opérations spécifiques, veuillez vous référer à la documentation officielle d'Elasticsearch.
  2. Configuration de la base de données
    Dans ThinkPHP6, nous pouvons utiliser la base de données pour stocker des données nécessitant une recherche en texte intégral. Tout d'abord, vous devez configurer les informations de connexion à la base de données dans le fichier 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;
    }
      Installez le plug-in Elasticsearch

      Dans ThinkPHP6, nous pouvons utiliser l'extension topthink/think-elasticsearch pour utiliser facilement Elasticsearch. Tout d'abord, vous devez utiliser Composer pour installer l'extension :

      rrreee

      Ensuite, vous devez configurer les informations de connexion Elasticsearch dans le fichier config/service.php :

      rrreee
        Créer un index et un modèle
      • Tout d'abord, nous devons créer un index pour stocker les données nécessitant une recherche en texte intégral. Exécutez la commande suivante dans la ligne de commande :
      • rrreee
      • Cela créera un index nommé article. Ensuite, nous devons créer une table de données correspondant à l'index dans la base de données et créer un modèle pour faire fonctionner la table de données. Exécutez la commande suivante :
      rrreee🎜Cela crée une table de données et un modèle nommés Article. Dans la classe modèle, nous devons définir la relation de mappage d'index et de champ d'Elasticsearch, ainsi que certains champs qui nécessitent une recherche en texte intégral : 🎜rrreee
        🎜Données indexées🎜Après avoir inséré les données dans le base de données, nous devons l'indexer dans Elasticsearch pour une recherche en texte intégral. Dans la classe model, vous pouvez utiliser la méthode index pour implémenter l'indexation des données, par exemple : 🎜🎜rrreee
          🎜Rechercher des données🎜Lorsque nous devons rechercher des données, nous peut utiliser la méthode search de la classe modèle pour effectuer une recherche en texte intégral. Par exemple, recherchez des articles contenant le mot-clé « ThinkPHP » dans le titre : 🎜🎜rrreee🎜Résumé🎜Grâce aux étapes ci-dessus, nous pouvons implémenter la fonction de recherche en texte intégral dans le framework ThinkPHP6. L'utilisation d'Elasticsearch comme moteur de recherche et la coopération avec le fonctionnement de la base de données de ThinkPHP6 peuvent réaliser une recherche complète de données et améliorer l'efficacité des requêtes. J'espère que cet article pourra vous être utile. 🎜🎜Lien de référence : 🎜🎜🎜Documentation officielle d'Elasticsearch : https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 🎜🎜Documentation officielle de ThinkPHP6 : https://www.kancloud.cn /manuel/thinkphp6_0/1037649🎜🎜

      Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

      Déclaration:
      Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn