Cara menggunakan PHP dan Elasticsearch untuk mengesyorkan hasil carian
Dengan perkembangan berterusan teknologi Internet, enjin carian telah menjadi pilihan pertama kami untuk mendapatkan maklumat. Untuk memberikan pengalaman pengguna yang lebih baik, enjin carian telah memperkenalkan sistem pengesyoran untuk memberikan pengguna hasil carian yang lebih relevan dan diperibadikan. Artikel ini akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk melaksanakan pengesyoran hasil carian.
Mula-mula, kita perlu memasang Elasticsearch. Anda boleh memuat turun versi stabil terkini dari laman web rasmi Elasticsearch dan memasangnya mengikut dokumentasi rasmi.
Dalam Elasticsearch, data disimpan dalam bentuk indeks. Sebelum membuat indeks, kita perlu menentukan pemetaan indeks. Dalam artikel ini, kami akan menggunakan sejarah carian pengguna sebagai asas untuk pengesyoran, jadi kami perlu mencipta indeks yang mengandungi sejarah carian pengguna. Dengan mengandaikan bahawa nama indeks kami ialah "search_history" dan jenis dokumen ialah "search", kami boleh menggunakan kod berikut untuk mencipta indeks:
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);
Kod ini menggunakan perpustakaan Elasticsearch-PHP untuk berinteraksi dengan Elasticsearch. Mula-mula, kami mencipta objek klien Elasticsearch, kemudian menentukan pemetaan indeks, dan menggunakan kaedah indeks()->create()
untuk mencipta indeks. 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'] . ')'; }
Kod ini menggunakan kaedah index()
untuk menyimpan sejarah carian pengguna ke dalam Elasticsearch. Antaranya, parameter index
menentukan nama indeks, parameter type
menentukan jenis dokumen dan parameter body
ialah kandungan dokumen tertentu.
Dapatkan syor carian
Selepas mendapat sejarah carian pengguna, kami boleh menjana syor carian berdasarkan sejarah carian pengguna. Berikut ialah contoh kod mudah:rrreee
Kod ini menggunakan kaedahsearch()
untuk melaksanakan operasi carian dan menggunakan pengagregatan untuk mendapatkan kata kunci yang disyorkan. Pengagregatan ialah operasi analisis biasa dalam Elasticsearch, digunakan untuk mengira, mengumpulkan dan menapis data. 🎜🎜Dalam kod di atas, parameter query
digunakan untuk menentukan syarat carian Di sini, medan "kata kunci" yang sepadan dengan "Elasticsearch" digunakan sebagai contoh. Parameter aggs
digunakan untuk mentakrifkan operasi pengagregatan dan parameter terms
menentukan pengagregatan mengikut medan "kata kunci" dan menyimpan hasilnya dalam "kata kunci_yang disyorkan". Akhir sekali, kami menyimpan kata kunci yang disyorkan dalam pembolehubah $recommended_keywords
untuk kegunaan seterusnya. 🎜🎜🎜Tunjukkan cadangan carian🎜🎜🎜Akhir sekali, kami boleh memaparkan kata kunci yang disyorkan kepada pengguna. Berikut ialah contoh kod mudah: 🎜rrreee🎜Kod ini berulang melalui kata kunci yang disyorkan dan memaparkan kata kunci dan bilangan kejadiannya kepada pengguna. Bergantung pada keperluan khusus, kami juga boleh menyediakan fungsi seperti penyiapan automatik hasil carian dan carian berkaitan berdasarkan kata kunci yang disyorkan. 🎜🎜Kesimpulan🎜🎜Artikel ini memperkenalkan cara menggunakan PHP dan Elasticsearch untuk melaksanakan pengesyoran hasil carian. Dengan menyimpan sejarah carian pengguna dan menggunakan fungsi pengagregatan Elasticsearch untuk menjana kata kunci yang disyorkan, kami boleh memberikan pengguna pengalaman carian yang lebih baik. Sudah tentu, perkara di atas hanyalah contoh mudah, dan sistem pengesyoran sebenar mungkin memerlukan algoritma dan strategi yang lebih kompleks untuk memberikan hasil pengesyoran yang lebih diperibadikan. Saya harap artikel ini dapat memberi anda sedikit bantuan semasa membina enjin carian dan sistem pengesyoran. 🎜Atas ialah kandungan terperinci Cara menggunakan PHP dan Elasticsearch untuk mengesyorkan hasil carian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!