Heim  >  Artikel  >  Backend-Entwicklung  >  Mehrsprachige Suchlösung implementiert mit PHP und Elasticsearch

Mehrsprachige Suchlösung implementiert mit PHP und Elasticsearch

PHPz
PHPzOriginal
2023-07-12 20:19:37737Durchsuche

Lösung für die mehrsprachige Suche implementiert durch PHP und Elasticsearch

Mit der rasanten Entwicklung des globalen Internets müssen immer mehr Anwendungen die mehrsprachige Suche unterstützen. In dieser mehrsprachigen Umgebung ist die Implementierung eines effizienten und genauen Suchsystems für die Benutzererfahrung und Datenabfrage sehr wichtig. In diesem Artikel wird erläutert, wie Sie mit PHP und Elasticsearch eine mehrsprachige Suchlösung implementieren.

1. Warum Elasticsearch wählen?
Elasticsearch ist eine verteilte Open-Source-Such- und Analysemaschine. Durch seine leistungsstarke Volltextsuchfunktion und Wortsegmentierung, die mehrere Sprachen unterstützt, kann es die Anforderungen der mehrsprachigen Suche gut erfüllen. Im Vergleich zu herkömmlichen relationalen Datenbanken bietet Elasticsearch eine höhere Leistung, eine flexiblere Abfragesyntax und eine bessere Skalierbarkeit, wodurch es sich sehr gut für den Aufbau von Suchmaschinen eignet.

2. Elasticsearch installieren und konfigurieren
Zuerst müssen wir Elasticsearch auf dem Server installieren und eine Grundkonfiguration durchführen. Spezifische Installations- und Konfigurationsverfahren finden Sie in der offiziellen Dokumentation von Elasticsearch. Nach Abschluss der Installation müssen wir einen Index erstellen und die entsprechende Zuordnung definieren, um die mehrsprachige Suche zu unterstützen.

3. Erstellen Sie Indizes und Zuordnungen
In Elasticsearch ähneln Indizes Tabellen in relationalen Datenbanken und werden zum Speichern und Indizieren von Daten verwendet. Wir können Indizes erstellen und entsprechende Zuordnungen definieren, indem wir HTTP-Anfragen senden. Das Folgende ist ein einfaches Beispiel:

PUT /my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      },
      "content": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      }
    }
  }
}

Im obigen Beispiel haben wir einen Index namens „my_index“ erstellt und zwei Felder „title“ und „content“ definiert. Jedes Feld verfügt über zwei Unterfelder „Englisch“ und „Chinesisch“, die zum Speichern der englischen bzw. chinesischen Wortsegmentierungsergebnisse verwendet werden. Das englische Feld verwendet den integrierten englischen Wortsegmentierer von Elasticsearch und das chinesische Feld verwendet den chinesischen Wortsegmentierer ik_max_word.

4. Suchvorgänge in PHP
In PHP können wir die offizielle Client-Bibliothek von Elasticsearch verwenden, um Suchvorgänge durchzuführen. Zuerst müssen wir das Paket elasticsearch/elasticsearch installieren. Sie können Composer verwenden, um die Installation abzuschließen. Führen Sie einfach den folgenden Namen aus:

composer require elasticsearch/elasticsearch

Als nächstes müssen wir das Elasticsearch-Paket einführen und eine Verbindung herstellen:

require 'vendor/autoload.php';

$client = new ElasticsearchClient([
    'hosts' => ['localhost:9200']
]);

Nach dem Herstellen der Verbindung können wir mit der Durchführung von Suchvorgängen beginnen. Das Folgende ist ein einfaches Beispiel für einen PHP-Suchcode:

$params = [
    'index' => 'my_index',
    'type' => '_doc',
    'body' => [
        'query' => [
            'multi_match' => [
                'query' => 'keyword',
                'fields' => ['title.english', 'content.english', 'title.chinese', 'content.chinese']
            ]
        ]
    ]
];

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

Im obigen Beispiel erstellen wir einen Anforderungstext, der das Abfrageschlüsselwort und das Suchfeld enthält, und verwenden dann die Suchmethode des Elasticsearch-Clients, um den Suchvorgang durchzuführen. Die Suchergebnisse werden in der Variablen $response gespeichert.

5. Ergebnisanalyse und -anzeige
Der letzte Schritt besteht darin, die Suchergebnisse zu analysieren und dem Benutzer anzuzeigen. Das Suchergebnis von Elasticsearch ist eine Datenstruktur, die mehrere Dokumente enthält. Wir müssen diese Dokumente durchsuchen und sie nach Bedarf analysieren und anzeigen.

Hier ist ein einfacher Beispielcode:

foreach ($response['hits']['hits'] as $hit) {
    $title = $hit['_source']['title'];
    $content = $hit['_source']['content'];

    // 在这里进行结果展示或其他操作
}

Im obigen Beispiel durchlaufen wir jedes Dokument in den Suchergebnissen und erhalten daraus den Titel und den Inhalt. Sie können die Ergebnisse je nach tatsächlichem Bedarf anzeigen, sortieren oder andere Operationen daran durchführen.

6. Zusammenfassung
Die Verwendung von PHP und Elasticsearch zur Implementierung mehrsprachiger Suchlösungen kann die Benutzererfahrung erheblich verbessern und genaue Suchergebnisse liefern. Durch eine sinnvolle Indexzuordnung und die Nutzung der leistungsstarken Suchfunktionen von Elasticsearch können wir ein leistungsstarkes mehrsprachiges Suchsystem aufbauen. Ich hoffe, dass der Inhalt dieses Artikels für Sie hilfreich sein kann, und wünsche Ihnen, dass Sie ein hervorragendes mehrsprachiges Suchsystem aufbauen!

Das obige ist der detaillierte Inhalt vonMehrsprachige Suchlösung implementiert 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