Heim Backend-Entwicklung PHP-Tutorial Fuzzy-Suche und semantische Suchimplementierung basierend auf Elasticsearch in PHP

Fuzzy-Suche und semantische Suchimplementierung basierend auf Elasticsearch in PHP

Oct 03, 2023 am 08:37 AM
elasticsearch 模糊搜索 语义搜索

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

Die Implementierung der Fuzzy-Suche und der semantischen Suche auf Basis von Elasticsearch in PHP erfordert spezifische Codebeispiele

In der modernen Internetumgebung ist die Suchfunktion zu einer der notwendigen Funktionen für verschiedene Anwendungen geworden. Die herkömmliche Fuzzy-Suche kann oft nur einen einfachen Abgleich auf der Grundlage von Schlüsselwörtern durchführen, es mangelt ihr jedoch an einem Verständnis der Benutzerabsichten. Die semantische Suche kann die Absicht des Benutzers besser erfassen und präzisere Suchergebnisse liefern. In diesem Artikel stellen wir vor, wie Sie mit Elasticsearch die Fuzzy-Suche und die semantische Suche in PHP implementieren, und geben spezifische Codebeispiele.

Elasticsearch ist eine auf Lucene basierende Open-Source-Suchmaschine, die umfangreiche Suchfunktionen und effiziente verteilte Suchunterstützung bietet. In PHP können wir die offizielle Client-Bibliothek von Elasticsearch – Elasticsearch-PHP – verwenden, um mit Elasticsearch zu interagieren.

Zuerst müssen wir die Elasticsearch-PHP-Bibliothek in das PHP-Projekt einführen. Es kann über Composer installiert werden. Sie müssen lediglich die folgenden Abhängigkeiten zur Datei „composer.json“ im Projektstammverzeichnis hinzufügen:

{
  "require": {
    "elasticsearch/elasticsearch": "^7.0"
  }
}
Nach dem Login kopieren

Führen Sie dann zur Installation den Befehl composer install aus. composer install 命令进行安装。

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

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

$client = ElasticsearchClientBuilder::create()
            ->setHosts(['localhost:9200']) // 修改为 Elasticsearch 的地址和端口
            ->build();
?>
Nach dem Login kopieren

以上代码中的 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'] . "
";
}
?>
Nach dem Login kopieren

以上代码中的 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"
  }
}
Nach dem Login kopieren

然后执行 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'] . "
";
}
?>
Nach dem Login kopieren

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

Als nächstes müssen wir eine Verbindung mit Elasticsearch herstellen. In PHP kann dies durch den folgenden Code erreicht werden:

rrreee

localhost:9200 im obigen Code ist die Adresse und der Port des Elasticsearch-Dienstes. Standardmäßig ist die Elasticsearch-Abhöradresse localhost und die Port ist 9200. Wenn Elasticsearch auf einem anderen Computer ausgeführt wird oder der Port unterschiedlich ist, muss er auf den entsprechenden Wert geändert werden. 🎜🎜Jetzt können wir mit der Implementierung der Fuzzy-Suchfunktion beginnen. Das Folgende ist ein einfaches Beispiel: 🎜rrreee🎜 my_index im obigen Code ist ein Index in Elasticsearch und title ist ein Feldname. Wir führen eine Fuzzy-Suche über die match-Abfrage durch und verwenden den Parameter fuzziness, um den Grad der Fuzzy-Übereinstimmung festzulegen. AUTO bedeutet, dass Elasticsearch den Grad des Fuzzy-Matchings automatisch bestimmen soll. 🎜🎜Wenn Sie komplexere Suchfunktionen benötigen, können Sie natürlich auch andere von Elasticsearch bereitgestellte Abfragetypen verwenden, z. B. multi_match, bool usw. Informationen zu bestimmten Verwendungsmethoden finden Sie in der offiziellen Dokumentation von Elasticsearch. 🎜🎜Als nächstes stellen wir vor, wie die semantische Suchfunktion implementiert wird. Um die semantische Suche zu implementieren, müssen wir ein Plug-In namens Elasticsearch-Elasticsearch Elasticsearch-Elasticsearch-DSL verwenden. Dieses Plug-in stellt eine DSL (Domain Specific Language) bereit, die komplexe Abfragen über PHP erstellen kann. 🎜🎜Zuerst müssen wir die Datei „composer.json“ ändern und die folgenden Abhängigkeiten hinzufügen: 🎜rrreee🎜 Dann führen Sie den Befehl composer install aus, um sie zu installieren. 🎜🎜Als nächstes können wir Elasticsearch-Elasticsearch-DSL verwenden, um semantische Abfragen zu erstellen. Das Folgende ist ein einfaches Beispiel: 🎜rrreee🎜title und content im obigen Code sind die Feldnamen in Elasticsearch, die wir über MultiMatchQuery erstellt haben Eine Abfrage mit mehreren Feldern und dem Grad des Fuzzy-Matchings. 🎜🎜Durch die obigen Codebeispiele können wir Elasticsearch verwenden, um Fuzzy-Suche und semantische Suchfunktionen in PHP zu implementieren. Natürlich kann die Suchfunktion in tatsächlichen Geschäftsszenarien weiter optimiert und erweitert werden, um genauere und effizientere Suchergebnisse zu erzielen. Ich hoffe, dieser Artikel hilft Ihnen! 🎜

Das obige ist der detaillierte Inhalt vonFuzzy-Suche und semantische Suchimplementierung basierend auf Elasticsearch in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Elasticsearch und PHP für die Produktsuche und -empfehlung So verwenden Sie Elasticsearch und PHP für die Produktsuche und -empfehlung Jul 09, 2023 pm 03:07 PM

So verwenden Sie Elasticsearch und PHP für die Produktsuche und -empfehlung. Einführung: Im heutigen E-Commerce-Bereich ist ein gutes Such- und Empfehlungssystem für Benutzer sehr wichtig. Elasticsearch ist eine leistungsstarke und flexible Open-Source-Suchmaschine, die in Kombination mit PHP als Back-End-Entwicklungssprache eine effiziente Produktsuche und personalisierte Empfehlungsfunktionen für E-Commerce-Websites bereitstellen kann. In diesem Artikel wird erläutert, wie Sie mit Elasticsearch und PHP Produktsuch- und Empfehlungsfunktionen implementieren und anhängen

ChatGPT Java: So erstellen Sie eine genaue semantische Suchmaschine ChatGPT Java: So erstellen Sie eine genaue semantische Suchmaschine Oct 24, 2023 am 10:21 AM

ChatGPTJava: So erstellen Sie eine genaue semantische Suchmaschine, die spezifische Codebeispiele erfordert. Einführung: Mit der rasanten Entwicklung des Internets und dem explosionsartigen Wachstum der Informationen stoßen Menschen bei der Beschaffung der erforderlichen Informationen häufig auf schlechte Qualität und inkonsistente Suchergebnisse Frage. Um genauere und effizientere Suchergebnisse bereitzustellen, wurden semantische Suchmaschinen entwickelt. In diesem Artikel wird erläutert, wie Sie mit ChatGPTJava eine genaue semantische Suchmaschine erstellen, und es werden spezifische Codebeispiele aufgeführt. 1. ChatGPTJ verstehen

So erstellen Sie ein Benutzeranmeldungs- und Berechtigungsverwaltungssystem mit Elasticsearch und PHP So erstellen Sie ein Benutzeranmeldungs- und Berechtigungsverwaltungssystem mit Elasticsearch und PHP Jul 08, 2023 pm 04:15 PM

So verwenden Sie Elasticsearch und PHP zum Aufbau eines Systems zur Benutzeranmeldung und Berechtigungsverwaltung. Einführung: Im aktuellen Internetzeitalter sind Benutzeranmeldung und Berechtigungsverwaltung eine der notwendigen Funktionen für jede Website oder Anwendung. Elasticsearch ist eine leistungsstarke und flexible Volltextsuchmaschine, während PHP eine weit verbreitete serverseitige Skriptsprache ist. In diesem Artikel wird erläutert, wie Sie Elasticsearch und PHP kombinieren, um ein einfaches System zur Benutzeranmeldung und Berechtigungsverwaltung zu erstellen

php Elasticsearch: Wie verwende ich dynamisches Mapping, um flexible Suchfunktionen zu erreichen? php Elasticsearch: Wie verwende ich dynamisches Mapping, um flexible Suchfunktionen zu erreichen? Sep 13, 2023 am 10:21 AM

PHPElasticsearch: Wie nutzt man dynamisches Mapping, um flexible Suchfunktionen zu erreichen? Einleitung: Suchfunktionen sind ein wesentlicher Bestandteil der Entwicklung moderner Anwendungen. Elasticsearch ist eine leistungsstarke Such- und Analysemaschine, die umfassende Funktionalität und flexible Datenmodellierung bietet. In diesem Artikel konzentrieren wir uns auf die Verwendung dynamischer Zuordnungen, um flexible Suchfunktionen zu erreichen. 1. Einführung in die dynamische Zuordnung In Elasticsearch ist die Zuordnung (mapp

So verwenden Sie die Amap-API in PHP, um die Fuzzy-Suche nach Ortsnamen zu implementieren So verwenden Sie die Amap-API in PHP, um die Fuzzy-Suche nach Ortsnamen zu implementieren Jul 31, 2023 pm 02:13 PM

Überblick über die Verwendung der Amap-API in PHP zur Implementierung der Fuzzy-Suche nach Ortsnamen: Bei der Entwicklung einer Anwendung basierend auf dem geografischen Standort ist es manchmal erforderlich, eine Fuzzy-Suche basierend auf dem vom Benutzer eingegebenen Ortsnamen durchzuführen und die Suchergebnisse zurückzugeben . Amap bietet einen umfangreichen Satz an APIs, mit denen diese Funktion problemlos implementiert werden kann. In diesem Artikel wird erläutert, wie Sie die Amap-API in PHP verwenden, um die Fuzzy-Suche nach Ortsnamen zu implementieren, und Sie erhalten Codebeispiele. Schritte: Besorgen Sie sich den Entwicklerschlüssel der Amap-API. Zuerst müssen Sie die offene Amap-Plattform öffnen

So verwenden Sie PHP und Elasticsearch, um Suchergebnisse hervorzuheben So verwenden Sie PHP und Elasticsearch, um Suchergebnisse hervorzuheben Jul 17, 2023 pm 09:24 PM

So verwenden Sie PHP und Elasticsearch, um hervorgehobene Suchergebnisse zu erzielen. Einführung: In der modernen Internetwelt sind Suchmaschinen zum wichtigsten Weg für Menschen geworden, Informationen zu erhalten. Um die Lesbarkeit und Benutzererfahrung von Suchergebnissen zu verbessern, ist die Hervorhebung von Suchbegriffen zu einer häufigen Anforderung geworden. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP und Elasticsearch hervorgehobene Suchergebnisse erzielen. 1. Vorbereitung Bevor wir beginnen, müssen wir sicherstellen, dass PHP und Elasticsearch korrekt installiert und konfiguriert wurden.

Eingehende Untersuchung der Elasticsearch-Abfragesyntax und praktischer Kampf Eingehende Untersuchung der Elasticsearch-Abfragesyntax und praktischer Kampf Oct 03, 2023 am 08:42 AM

Eingehende Untersuchung der Elasticsearch-Abfragesyntax und praktische Einführung: Elasticsearch ist eine auf Lucene basierende Open-Source-Suchmaschine. Sie wird hauptsächlich für die verteilte Suche und Analyse verwendet. Sie wird häufig bei der Volltextsuche großer Datenmengen und bei der Protokollanalyse verwendet , Empfehlungssysteme und andere Szenarien. Bei der Verwendung von Elasticsearch für Datenabfragen ist die flexible Verwendung der Abfragesyntax der Schlüssel zur Verbesserung der Abfrageeffizienz. Dieser Artikel befasst sich mit der Elasticsearch-Abfragesyntax und stellt sie anhand tatsächlicher Fälle dar.

Protokollanalyse und Ausnahmeüberwachung basierend auf Elasticsearch in PHP Protokollanalyse und Ausnahmeüberwachung basierend auf Elasticsearch in PHP Oct 03, 2023 am 10:03 AM

Zusammenfassung der Protokollanalyse und Ausnahmeüberwachung basierend auf Elasticsearch in PHP: In diesem Artikel wird erläutert, wie Sie die Elasticsearch-Datenbank für die Protokollanalyse und Ausnahmeüberwachung verwenden. Anhand prägnanter PHP-Codebeispiele wird gezeigt, wie Sie eine Verbindung zur Elasticsearch-Datenbank herstellen, Protokolldaten in die Datenbank schreiben und die leistungsstarke Abfragefunktion von Elasticsearch verwenden, um Anomalien in den Protokollen zu analysieren und zu überwachen. Einführung: Protokollanalyse und Ausnahmeüberwachung sind

See all articles