Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie eine mehrsprachige Suche mit PHP und Elasticsearch

So implementieren Sie eine mehrsprachige Suche mit PHP und Elasticsearch

王林
王林Original
2023-07-17 08:12:11770Durchsuche

So implementieren Sie die mehrsprachige Suche über PHP und Elasticsearch

In der heutigen Internetumgebung ist die mehrsprachige Suche mit der Entwicklung der Globalisierung zu einer der notwendigen Funktionen für viele Websites geworden. Als leistungsstarke Open-Source-Suchmaschine verfügt Elasticsearch über effiziente und flexible Suchfunktionen. In diesem Artikel wird anhand von Codebeispielen erläutert, wie die mehrsprachige Suche über PHP und Elasticsearch implementiert wird.

1. Vorbereitung
Bevor Sie beginnen, müssen Sie sicherstellen, dass die folgende Umgebung installiert ist:

  1. PHP-Umgebung: Stellen Sie sicher, dass PHP installiert wurde und normal ausgeführt werden kann.
  2. Elasticsearch: Stellen Sie sicher, dass Elasticsearch installiert ist und normal starten kann.

2. Erstellen Sie einen Index
Bevor Sie eine mehrsprachige Suche durchführen, müssen Sie zunächst einen geeigneten Index erstellen und die entsprechenden Daten in Elasticsearch speichern. Das Folgende ist ein einfaches Beispiel:

<?php

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$hosts = [
    'http://localhost:9200'
];

$client = ClientBuilder::create()
                ->setHosts($hosts)
                ->build();

$params = [
    'index' => 'my_index',
    'body'  => [
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ],
                'content' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ]
            ]
        ]
    ]
];

$response = $client->indices()->create($params);

Im obigen Code verwenden wir den PHP-Client von Elasticsearch, um einen Index namens my_index zu erstellen, der einen Titel und ein Inhaltsfeld enthält, die dem Titel bzw. Inhalt des Artikels entsprechen. Es werden zwei Unterfelder „zh“ und „en“ definiert, die zum Speichern chinesischer bzw. englischer Datenversionen verwendet werden, und die entsprechenden Analysatoren werden angegeben.

3. Daten einfügen
Als nächstes müssen wir einige Daten für nachfolgende Suchen in den Index einfügen. Hier ist ein einfaches Beispiel:

<?php

$doc = [
    'title' => [
        'zh' => '中文标题',
        'en' => 'English title'
    ],
    'content' => [
        'zh' => '中文内容',
        'en' => 'English content'
    ]
];

$params = [
    'index' => 'my_index',
    'id'    => '1',
    'body'  => $doc
];

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

Im obigen Code erstellen wir ein Dokument mit chinesischen und englischen Titeln und Inhalten und fügen es in einen Index namens my_index ein.

4. Suche
Nachdem wir die Erstellung des Index und das Einfügen von Daten abgeschlossen haben, können wir mit der mehrsprachigen Suche beginnen. Das Folgende ist ein einfaches Beispiel:

<?php

$params = [
    'index' => 'my_index',
    'body'  => [
        'query' => [
            'multi_match' => [
                'query' => '关键词',
                'fields' => ['title.zh', 'content.zh', 'title.en', 'content.en']
            ]
        ]
    ]
];

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

var_dump($response['hits']['hits']);

Im obigen Code verwenden wir die mehrsprachige Mehrfeldsuche, um zu suchen, indem wir die zu durchsuchenden Felder und Schlüsselwörter angeben. Suchergebnisse werden nach Relevanz sortiert und passende Dokumente werden zurückgegeben.

5. Zusammenfassung
Es ist nicht kompliziert, eine mehrsprachige Suche über PHP und Elasticsearch zu implementieren. Durch die Erstellung geeigneter Indizes und Dateneinfügungen in Kombination mit der Suche in mehreren Sprachen und Feldern können wir Suchfunktionen in mehreren Sprachen schnell und genau implementieren. Ich hoffe, dieser Artikel ist hilfreich für Sie.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine mehrsprachige Suche mit PHP und Elasticsearch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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