Maison développement back-end tutoriel php Implémentation de la recherche floue et de la recherche sémantique basée sur Elasticsearch en PHP

Implémentation de la recherche floue et de la recherche sémantique basée sur Elasticsearch en PHP

Oct 03, 2023 am 08:37 AM
elasticsearch 模糊搜索 Recherche sémantique

PHP 中基于 Elasticsearch 的模糊搜索与语义搜索实现

La mise en œuvre de la recherche floue et de la recherche sémantique basée sur Elasticsearch en PHP nécessite des exemples de code spécifiques

Dans l'environnement Internet moderne, la fonction de recherche est devenue l'une des fonctions nécessaires pour diverses applications. La recherche floue traditionnelle ne peut souvent effectuer qu'une simple correspondance basée sur des mots-clés, mais manque de compréhension des intentions des utilisateurs. La recherche sémantique peut mieux capturer l'intention de l'utilisateur et fournir des résultats de recherche plus précis. Dans cet article, nous présenterons comment utiliser Elasticsearch pour implémenter la recherche floue et la recherche sémantique en PHP, et donnerons des exemples de code spécifiques.

Elasticsearch est un moteur de recherche open source basé sur Lucene, qui fournit des fonctions de recherche riches et un support de recherche distribué efficace. En PHP, nous pouvons utiliser la bibliothèque client officielle fournie par Elasticsearch - Elasticsearch-PHP pour interagir avec Elasticsearch.

Tout d'abord, nous devons introduire la bibliothèque Elasticsearch-PHP dans le projet PHP. Il peut être installé via Composer. Il vous suffit d'ajouter les dépendances suivantes au fichier composer.json dans le répertoire racine du projet :

{
  "require": {
    "elasticsearch/elasticsearch": "^7.0"
  }
}
Copier après la connexion

Exécutez ensuite la commande composer install pour l'installer. composer install 命令进行安装。

接下来,我们需要与 Elasticsearch 建立连接。在 PHP 中,可以通过以下代码来实现:

<?php
require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()
            ->setHosts(['localhost:9200']) // 修改为 Elasticsearch 的地址和端口
            ->build();
?>
Copier après la connexion

以上代码中的 localhost:9200 是 Elasticsearch 服务的地址和端口,默认情况下 Elasticsearch 监听地址为 localhost,端口为 9200。如果 Elasticsearch 运行在其他机器上或者端口不同,需要修改为相应的值。

现在,我们可以开始实现模糊搜索的功能了。以下是一个简单的例子:

<?php
require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()
            ->setHosts(['localhost:9200'])
            ->build();

$params = [
    'index' => 'my_index',
    'body'  => [
        'query' => [
            'match' => [
                'title' => [
                    'query' => '搜索关键字',
                    'fuzziness' => 'AUTO',
                ],
            ],
        ],
    ],
];

$response = $client->search($params);

foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . "
";
}
?>
Copier après la connexion

以上代码中的 my_index 是 Elasticsearch 中的一个索引,title 是一个字段名。我们通过 match 查询来进行模糊搜索,利用 fuzziness 参数来设置模糊匹配的程度。AUTO 表示让 Elasticsearch 自动判断模糊匹配程度。

当然,如果需要更加复杂的搜索功能,还可以使用 Elasticsearch 提供的其他查询类型,比如 multi_matchbool 等。具体的使用方法可以参考 Elasticsearch 的官方文档。

接下来,我们将介绍如何实现语义搜索的功能。为了实现语义搜索,我们需要借助一个叫做 Elasticsearch 的插件——Elasticsearch Elasticsearch-Elasticsearch-DSL。该插件提供了可以通过 PHP 构建复杂查询的 DSL(Domain Specific Language)。

首先,我们需要修改 composer.json 文件,添加以下依赖:

{
  "require": {
    "elasticsearch/elasticsearch": "^7.0",
    "elastic/elasticsearch-dsl": "^8.0"
  }
}
Copier après la connexion

然后执行 composer install 命令进行安装。

接下来,我们可以使用 Elasticsearch-Elasticsearch-DSL 来构建语义查询。以下是一个简单的例子:

<?php
require 'vendor/autoload.php';

use ElasticsearchClientBuilder;
use ElasticsearchDSLSearch;

$client = ClientBuilder::create()
            ->setHosts(['localhost:9200'])
            ->build();

$search = new Search();
$search->addQuery(
    (new ElasticsearchElasticsearchDSLQueryMultiMatchQuery('搜索关键词', ['title', 'content']))
        ->setFuzziness('AUTO')
);

$params = [
    'index' => 'my_index',
    'body'  => $search->toArray(),
];

$response = $client->search($params);

foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . "
";
}
?>
Copier après la connexion

以上代码中的 titlecontent 是 Elasticsearch 中的字段名,我们通过 MultiMatchQuery

Ensuite, nous devons établir une connexion avec Elasticsearch. En PHP, cela peut être réalisé via le code suivant :

rrreee

localhost:9200 dans le code ci-dessus est l'adresse et le port du service Elasticsearch. Par défaut, l'adresse d'écoute Elasticsearch est localhost et le. le port est 9200. Si Elasticsearch s'exécute sur une autre machine ou si le port est différent, il doit être modifié avec la valeur correspondante. 🎜🎜Maintenant, nous pouvons commencer à implémenter la fonction de recherche floue. Voici un exemple simple : 🎜rrreee🎜 my_index dans le code ci-dessus est un index dans Elasticsearch et title est un nom de champ. Nous effectuons une recherche floue via la requête match et utilisons le paramètre fuzziness pour définir le degré de correspondance floue. AUTO signifie laisser Elasticsearch déterminer automatiquement le degré de correspondance floue. 🎜🎜Bien sûr, si vous avez besoin de fonctions de recherche plus complexes, vous pouvez également utiliser d'autres types de requêtes fournis par Elasticsearch, tels que multi_match, bool, etc. Pour les méthodes d'utilisation spécifiques, veuillez vous référer à la documentation officielle d'Elasticsearch. 🎜🎜Ensuite, nous présenterons comment implémenter la fonction de recherche sémantique. Afin d'implémenter la recherche sémantique, nous devons utiliser un plug-in appelé Elasticsearch-Elasticsearch Elasticsearch-Elasticsearch-DSL. Ce plug-in fournit un DSL (Domain Specific Language) qui permet de créer des requêtes complexes via PHP. 🎜🎜Tout d'abord, nous devons modifier le fichier composer.json et ajouter les dépendances suivantes : 🎜rrreee🎜 Ensuite, exécutez la commande composer install pour l'installer. 🎜🎜Ensuite, nous pouvons utiliser Elasticsearch-Elasticsearch-DSL pour créer des requêtes sémantiques. Voici un exemple simple : 🎜rrreee🎜Le title et le content dans le code ci-dessus sont les noms de champs dans Elasticsearch, que nous avons construits via MultiMatchQuery Une requête multi-champs avec le degré de correspondance floue défini. 🎜🎜Grâce aux exemples de code ci-dessus, nous pouvons utiliser Elasticsearch pour implémenter des fonctions de recherche floue et de recherche sémantique en PHP. Bien entendu, dans des scénarios commerciaux réels, la fonction de recherche peut être encore optimisée et étendue pour obtenir des résultats de recherche plus précis et plus efficaces. J'espère que cet article vous aidera ! 🎜

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser Elasticsearch et PHP pour la recherche et la recommandation de produits Comment utiliser Elasticsearch et PHP pour la recherche et la recommandation de produits Jul 09, 2023 pm 03:07 PM

Comment utiliser Elasticsearch et PHP pour la recherche et la recommandation de produits Introduction : Dans le domaine du commerce électronique actuel, un bon système de recherche et de recommandation est très important pour les utilisateurs. Elasticsearch est un moteur de recherche open source puissant et flexible, associé à PHP comme langage de développement back-end, il peut fournir une recherche de produits efficace et des fonctions de recommandation personnalisées pour les sites Web de commerce électronique. Cet article expliquera comment utiliser Elasticsearch et PHP pour implémenter des fonctions de recherche et de recommandation de produits, et joindre

ChatGPT Java : Comment créer un moteur de recherche sémantique précis ChatGPT Java : Comment créer un moteur de recherche sémantique précis Oct 24, 2023 am 10:21 AM

ChatGPTJava : Comment créer un moteur de recherche sémantique précis, nécessitant des exemples de code spécifiques Introduction : Avec le développement rapide d'Internet et la croissance explosive de l'information, les gens rencontrent souvent des résultats de recherche de mauvaise qualité et incohérents lors du processus d'obtention des informations requises. Question exacte. Afin de fournir des résultats de recherche plus précis et plus efficaces, les moteurs de recherche sémantiques ont vu le jour. Cet article expliquera comment utiliser ChatGPTJava pour créer un moteur de recherche sémantique précis et donnera des exemples de code spécifiques. 1. Comprendre ChatGPTJ

Comment créer un système de gestion des connexions et des autorisations des utilisateurs à l'aide d'Elasticsearch et PHP Comment créer un système de gestion des connexions et des autorisations des utilisateurs à l'aide d'Elasticsearch et PHP Jul 08, 2023 pm 04:15 PM

Comment utiliser Elasticsearch et PHP pour créer un système de gestion des connexions et des autorisations des utilisateurs Introduction : À l'ère actuelle d'Internet, la gestion des connexions et des autorisations des utilisateurs est l'une des fonctions nécessaires pour chaque site Web ou application. Elasticsearch est un moteur de recherche en texte intégral puissant et flexible, tandis que PHP est un langage de script côté serveur largement utilisé. Cet article explique comment combiner Elasticsearch et PHP pour créer un système simple de gestion des connexions et des autorisations des utilisateurs.

php Elasticsearch : Comment utiliser le mappage dynamique pour obtenir une fonctionnalité de recherche flexible ? php Elasticsearch : Comment utiliser le mappage dynamique pour obtenir une fonctionnalité de recherche flexible ? Sep 13, 2023 am 10:21 AM

PHPElasticsearch : Comment utiliser le mappage dynamique pour obtenir des capacités de recherche flexibles ? Introduction : La fonctionnalité de recherche fait partie intégrante du développement d'applications modernes. Elasticsearch est un puissant moteur de recherche et d'analyse qui offre des fonctionnalités riches et une modélisation de données flexible. Dans cet article, nous nous concentrerons sur la façon d'utiliser le mappage dynamique pour obtenir des capacités de recherche flexibles. 1. Introduction au mappage dynamique Dans Elasticsearch, le mappage (mapp

Comment utiliser l'API Amap en php pour implémenter la recherche floue de noms de lieux Comment utiliser l'API Amap en php pour implémenter la recherche floue de noms de lieux Jul 31, 2023 pm 02:13 PM

Présentation de l'utilisation de l'API Amap en PHP pour implémenter une recherche floue de noms de lieux : lors du développement d'une application basée sur la localisation géographique, il est parfois nécessaire d'effectuer une recherche floue basée sur le nom de lieu saisi par l'utilisateur et de renvoyer les résultats de la recherche. . Amap fournit un riche ensemble d'API qui peuvent facilement implémenter cette fonction. Cet article explique comment utiliser l'API Amap en PHP pour implémenter la recherche floue de noms de lieux et vous fournit des exemples de code. Étapes : Obtenez la clé de développeur de l'API Amap. Tout d'abord, vous devez ouvrir la plateforme ouverte Amap.

Comment utiliser PHP et Elasticsearch pour mettre en évidence les résultats de recherche Comment utiliser PHP et Elasticsearch pour mettre en évidence les résultats de recherche Jul 17, 2023 pm 09:24 PM

Comment utiliser PHP et Elasticsearch pour obtenir des résultats de recherche mis en évidence Introduction : Dans le monde Internet moderne, les moteurs de recherche sont devenus le principal moyen permettant aux utilisateurs d'obtenir des informations. Afin d’améliorer la lisibilité et l’expérience utilisateur des résultats de recherche, la mise en avant des mots-clés de recherche est devenue une exigence courante. Cet article explique comment utiliser PHP et Elasticsearch pour obtenir des résultats de recherche mis en évidence. 1. Préparation Avant de commencer, nous devons nous assurer que PHP et Elasticsearch ont été installés et configurés correctement.

Étude approfondie de la syntaxe des requêtes Elasticsearch et du combat pratique Étude approfondie de la syntaxe des requêtes Elasticsearch et du combat pratique Oct 03, 2023 am 08:42 AM

Étude approfondie de la syntaxe des requêtes Elasticsearch et introduction pratique : Elasticsearch est un moteur de recherche open source basé sur Lucene. Il est principalement utilisé pour la recherche et l'analyse distribuées. Il est largement utilisé dans la recherche en texte intégral de données à grande échelle et l'analyse de journaux. , systèmes de recommandation et autres scénarios. Lorsque vous utilisez Elasticsearch pour les requêtes de données, l'utilisation flexible de la syntaxe des requêtes est la clé pour améliorer l'efficacité des requêtes. Cet article approfondira la syntaxe des requêtes Elasticsearch et la présentera sur la base de cas réels.

Analyse des journaux et surveillance des exceptions basées sur Elasticsearch en PHP Analyse des journaux et surveillance des exceptions basées sur Elasticsearch en PHP Oct 03, 2023 am 10:03 AM

Résumé de l'analyse des journaux et de la surveillance des exceptions basée sur Elasticsearch en PHP : cet article explique comment utiliser la base de données Elasticsearch pour l'analyse des journaux et la surveillance des exceptions. Grâce à des exemples de code PHP concis, il montre comment se connecter à la base de données Elasticsearch, écrire des données de journaux dans la base de données et utiliser la puissante fonction de requête d'Elasticsearch pour analyser et surveiller les anomalies dans les journaux. Introduction : L'analyse des journaux et la surveillance des exceptions sont

See all articles