Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie PHP und Elasticsearch, um Suchergebnisse zu empfehlen
So verwenden Sie PHP und Elasticsearch, um Suchergebnisse zu empfehlen
Mit der kontinuierlichen Weiterentwicklung der Internettechnologie sind Suchmaschinen zu unserer ersten Wahl für die Informationsbeschaffung geworden. Um ein besseres Benutzererlebnis zu bieten, haben Suchmaschinen Empfehlungssysteme eingeführt, um Benutzern relevantere und personalisiertere Suchergebnisse bereitzustellen. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP und Elasticsearch Empfehlungen für Suchergebnisse implementieren.
Zuerst müssen wir Elasticsearch installieren. Sie können die neueste stabile Version von der offiziellen Website von Elasticsearch herunterladen und gemäß der offiziellen Dokumentation installieren.
In Elasticsearch werden Daten in Form von Indizes gespeichert. Bevor wir einen Index erstellen, müssen wir die Zuordnung des Index definieren. In diesem Artikel verwenden wir den Benutzersuchverlauf als Grundlage für Empfehlungen. Daher müssen wir einen Index erstellen, der den Benutzersuchverlauf enthält. Angenommen, unser Indexname ist „search_history“ und der Dokumenttyp ist „search“, können wir den folgenden Code verwenden, um einen Index zu erstellen:
require 'vendor/autoload.php'; use ElasticsearchClientBuilder; $client = ClientBuilder::create()->build(); $params = [ 'index' => 'search_history', 'body' => [ 'mappings' => [ 'search' => [ 'properties' => [ 'user_id' => ['type' => 'integer'], 'keyword' => ['type' => 'text'] ] ] ] ] ]; $response = $client->indices()->create($params);
Dieser Code verwendet die Elasticsearch-PHP-Bibliothek, um mit Elasticsearch zu interagieren. Zuerst erstellen wir ein Elasticsearch-Clientobjekt, definieren dann die Indexzuordnung und verwenden die Methode indices()->create()
, um den Index zu erstellen. indices()->create()
方法来创建索引。
当用户进行搜索操作时,我们需要将用户的搜索记录存储到Elasticsearch中。以下是一个简单的示例代码:
$params = [ 'index' => 'search_history', 'type' => 'search', 'body' => [ 'user_id' => 1, 'keyword' => 'Elasticsearch' ] ]; $response = $client->index($params);
这段代码使用了index()
方法将用户搜索历史存储到Elasticsearch中。其中,index
参数指定了索引名称,type
参数指定了文档类型,body
参数则是具体的文档内容。
在得到用户的搜索历史后,我们可以根据用户的搜索历史来生成搜索推荐。以下是一个简单的示例代码:
$params = [ 'index' => 'search_history', 'type' => 'search', 'body' => [ 'query' => [ 'match' => [ 'keyword' => 'Elasticsearch' ] ], 'aggs' => [ 'recommended_keywords' => [ 'terms' => [ 'field' => 'keyword' ] ] ] ] ]; $response = $client->search($params); $recommended_keywords = $response['aggregations']['recommended_keywords']['buckets'];
这段代码使用了search()
方法来进行搜索操作,并使用了聚合(aggregation)来获取推荐的关键词。聚合是Elasticsearch中一种常见的分析操作,用于统计、分组和过滤数据。
以上代码中,query
参数用于指定搜索条件,这里以"keyword"字段匹配"Elasticsearch"作为示例。而aggs
参数则用于定义聚合操作,terms
参数指定了按照"keyword"字段进行聚合,并将结果存储在"recommended_keywords"中。最后,我们将推荐的关键词保存在$recommended_keywords
foreach ($recommended_keywords as $keyword) { echo $keyword['key'] . ' (' . $keyword['doc_count'] . ')'; }
Dieser Code verwendet die Methode index()
, um den Benutzersuchverlauf in Elasticsearch zu speichern. Unter diesen gibt der Parameter index
den Indexnamen an, der Parameter type
gibt den Dokumenttyp an und der Parameter body
gibt den spezifischen Dokumentinhalt an.
Suchempfehlungen erhalten
Nachdem wir den Suchverlauf des Benutzers erhalten haben, können wir Suchempfehlungen basierend auf dem Suchverlauf des Benutzers generieren. Das Folgende ist ein einfacher Beispielcode:rrreee
Dieser Code verwendet die Methodesearch()
, um Suchvorgänge durchzuführen, und verwendet Aggregation, um empfohlene Schlüsselwörter zu erhalten. Aggregation ist eine gängige Analyseoperation in Elasticsearch, die zum Zählen, Gruppieren und Filtern von Daten verwendet wird. 🎜🎜Im obigen Code wird der Parameter query
verwendet, um die Suchbedingungen anzugeben. Hier wird das Feld „keyword“ passend zu „Elasticsearch“ als Beispiel verwendet. Der Parameter aggs
wird verwendet, um den Aggregationsvorgang zu definieren, und der Parameter terms
spezifiziert die Aggregation gemäß dem Feld „keyword“ und speichert das Ergebnis in „recommended_keywords“. Abschließend speichern wir die empfohlenen Schlüsselwörter zur späteren Verwendung in der Variablen $recommended_keywords
. 🎜🎜🎜Suchempfehlungen anzeigen🎜🎜🎜Endlich können wir dem Benutzer die empfohlenen Schlüsselwörter anzeigen. Hier ist ein einfacher Beispielcode: 🎜rrreee🎜Dieser Code durchläuft die empfohlenen Schlüsselwörter und zeigt dem Benutzer die Schlüsselwörter und ihre Häufigkeit an. Je nach Bedarf können wir auch Funktionen wie die automatische Vervollständigung von Suchergebnissen und verwandte Suchen basierend auf empfohlenen Schlüsselwörtern bereitstellen. 🎜🎜Fazit🎜🎜In diesem Artikel wird erläutert, wie Sie mit PHP und Elasticsearch Suchergebnisempfehlungen implementieren. Durch die Speicherung des Suchverlaufs der Benutzer und die Verwendung der Aggregationsfunktion von Elasticsearch zur Generierung empfohlener Schlüsselwörter können wir Benutzern ein besseres Sucherlebnis bieten. Das Obige ist natürlich nur ein einfaches Beispiel, und tatsächliche Empfehlungssysteme erfordern möglicherweise komplexere Algorithmen und Strategien, um personalisiertere Empfehlungsergebnisse bereitzustellen. Ich hoffe, dieser Artikel kann Ihnen beim Aufbau von Suchmaschinen und Empfehlungssystemen hilfreich sein. 🎜Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP und Elasticsearch, um Suchergebnisse zu empfehlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!