Rumah pembangunan bahagian belakang tutorial php Carian kabur dan pelaksanaan carian semantik berdasarkan Elasticsearch dalam PHP

Carian kabur dan pelaksanaan carian semantik berdasarkan Elasticsearch dalam PHP

Oct 03, 2023 am 08:37 AM
elasticsearch carian kabur Carian semantik

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

Pelaksanaan carian kabur dan carian semantik berdasarkan Elasticsearch dalam PHP memerlukan contoh kod khusus

Dalam persekitaran Internet moden, fungsi carian telah menjadi salah satu fungsi yang diperlukan untuk pelbagai aplikasi. Carian kabur tradisional selalunya hanya boleh melakukan padanan mudah berdasarkan kata kunci, tetapi kurang memahami niat pengguna. Carian semantik boleh menangkap niat pengguna dengan lebih baik dan memberikan hasil carian yang lebih tepat. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Elasticsearch untuk melaksanakan carian kabur dan carian semantik dalam PHP, dan memberikan contoh kod khusus.

Elasticsearch ialah enjin carian sumber terbuka berdasarkan Lucene, yang menyediakan fungsi carian yang kaya dan sokongan carian teragih yang cekap. Dalam PHP, kita boleh menggunakan perpustakaan pelanggan rasmi yang disediakan oleh Elasticsearch - Elasticsearch-PHP untuk berinteraksi dengan Elasticsearch.

Pertama, kita perlu memperkenalkan perpustakaan Elasticsearch-PHP ke dalam projek PHP. Ia boleh dipasang melalui Komposer. Anda hanya perlu menambah kebergantungan berikut pada fail composer.json dalam direktori akar projek:

{
  "require": {
    "elasticsearch/elasticsearch": "^7.0"
  }
}
Salin selepas log masuk

Kemudian laksanakan perintah composer install untuk memasang. composer install 命令进行安装。

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

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

$client = ElasticsearchClientBuilder::create()
            ->setHosts(['localhost:9200']) // 修改为 Elasticsearch 的地址和端口
            ->build();
?>
Salin selepas log masuk

以上代码中的 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'] . "
";
}
?>
Salin selepas log masuk

以上代码中的 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"
  }
}
Salin selepas log masuk

然后执行 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'] . "
";
}
?>
Salin selepas log masuk

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

Seterusnya, kita perlu mewujudkan sambungan dengan Elasticsearch. Dalam PHP, ini boleh dicapai melalui kod berikut:

rrreee

localhost:9200 dalam kod di atas ialah alamat dan port perkhidmatan Elasticsearch Secara lalai, alamat pendengaran Elasticsearch ialah localhost dan port ialah 9200. Jika Elasticsearch dijalankan pada mesin lain atau port berbeza, ia perlu diubah suai kepada nilai yang sepadan. 🎜🎜Kini, kita boleh mula melaksanakan fungsi carian kabur. Berikut ialah contoh mudah: 🎜rrreee🎜 my_index dalam kod di atas ialah indeks dalam Elasticsearch dan title ialah nama medan. Kami melakukan carian kabur melalui pertanyaan padan dan menggunakan parameter fuzziness untuk menetapkan tahap padanan kabur. AUTO bermaksud membenarkan Elasticsearch menentukan secara automatik tahap padanan kabur. 🎜🎜Sudah tentu, jika anda memerlukan fungsi carian yang lebih kompleks, anda juga boleh menggunakan jenis pertanyaan lain yang disediakan oleh Elasticsearch, seperti multi_match, bool, dsb. Untuk kaedah penggunaan khusus, sila rujuk kepada dokumentasi rasmi Elasticsearch. 🎜🎜Seterusnya, kami akan memperkenalkan cara melaksanakan fungsi carian semantik. Untuk melaksanakan carian semantik, kita perlu menggunakan pemalam yang dipanggil Elasticsearch-Elasticsearch Elasticsearch-Elasticsearch-DSL. Pemalam ini menyediakan DSL (Bahasa Khusus Domain) yang boleh membina pertanyaan kompleks melalui PHP. 🎜🎜Mula-mula, kita perlu mengubah suai fail composer.json dan menambah kebergantungan berikut: 🎜rrreee🎜 Kemudian laksanakan perintah composer install untuk memasangnya. 🎜🎜Seterusnya, kita boleh menggunakan Elasticsearch-Elasticsearch-DSL untuk membina pertanyaan semantik. Berikut ialah contoh mudah: 🎜rrreee🎜tajuk dan kandungan dalam kod di atas ialah nama medan dalam Elasticsearch, yang kami bina melalui MultiMatchQuery Pertanyaan berbilang medan dengan darjah set padanan kabur. 🎜🎜Melalui contoh kod di atas, kita boleh menggunakan Elasticsearch untuk melaksanakan carian kabur dan fungsi carian semantik dalam PHP. Sudah tentu, dalam senario perniagaan sebenar, fungsi carian boleh dioptimumkan lagi dan dikembangkan untuk mencapai hasil carian yang lebih tepat dan cekap. Harap artikel ini membantu anda! 🎜

Atas ialah kandungan terperinci Carian kabur dan pelaksanaan carian semantik berdasarkan Elasticsearch dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan Elasticsearch dan PHP untuk carian dan pengesyoran produk Cara menggunakan Elasticsearch dan PHP untuk carian dan pengesyoran produk Jul 09, 2023 pm 03:07 PM

Cara menggunakan Elasticsearch dan PHP untuk carian dan pengesyoran produk Pengenalan: Dalam bidang e-dagang hari ini, sistem carian dan pengesyoran yang baik adalah sangat penting untuk pengguna. Elasticsearch ialah enjin carian sumber terbuka yang berkuasa dan fleksibel Digabungkan dengan PHP sebagai bahasa pembangunan bahagian belakang, ia boleh menyediakan carian produk yang cekap dan fungsi pengesyoran yang diperibadikan untuk tapak web e-dagang. Artikel ini akan memperkenalkan cara menggunakan Elasticsearch dan PHP untuk melaksanakan fungsi carian dan pengesyoran produk, dan lampirkan

ChatGPT Java: Bagaimana untuk membina enjin carian semantik yang tepat ChatGPT Java: Bagaimana untuk membina enjin carian semantik yang tepat Oct 24, 2023 am 10:21 AM

ChatGPTJava: Bagaimana untuk membina enjin carian semantik yang tepat, memerlukan contoh kod khusus Pengenalan: Dengan perkembangan pesat Internet dan pertumbuhan maklumat yang meletup, orang ramai sering menghadapi hasil carian yang tidak berkualiti dan tidak konsisten dalam proses mendapatkan maklumat yang diperlukan. Soalan tepat. Untuk memberikan hasil carian yang lebih tepat dan cekap, enjin carian semantik telah wujud. Artikel ini akan memperkenalkan cara menggunakan ChatGPTJava untuk membina enjin carian semantik yang tepat dan memberikan contoh kod khusus. 1. Memahami ChatGPTJ

Bagaimana untuk membina log masuk pengguna dan sistem pengurusan kebenaran menggunakan Elasticsearch dan PHP Bagaimana untuk membina log masuk pengguna dan sistem pengurusan kebenaran menggunakan Elasticsearch dan PHP Jul 08, 2023 pm 04:15 PM

Cara menggunakan Elasticsearch dan PHP untuk membina log masuk pengguna dan sistem pengurusan kebenaran Pengenalan: Dalam era Internet semasa, log masuk pengguna dan pengurusan kebenaran adalah salah satu fungsi yang diperlukan untuk setiap laman web atau aplikasi. Elasticsearch ialah enjin carian teks penuh yang berkuasa dan fleksibel, manakala PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas. Artikel ini akan memperkenalkan cara menggabungkan Elasticsearch dan PHP untuk membina log masuk pengguna dan sistem pengurusan kebenaran yang mudah

php Elasticsearch: Bagaimana untuk menggunakan pemetaan dinamik untuk mencapai fungsi carian yang fleksibel? php Elasticsearch: Bagaimana untuk menggunakan pemetaan dinamik untuk mencapai fungsi carian yang fleksibel? Sep 13, 2023 am 10:21 AM

PHPElasticsearch: Bagaimana untuk menggunakan pemetaan dinamik untuk mencapai keupayaan carian yang fleksibel? Pengenalan: Fungsi carian adalah bahagian penting dalam membangunkan aplikasi moden. Elasticsearch ialah enjin carian dan analisis berkuasa yang menyediakan fungsi yang kaya dan pemodelan data yang fleksibel. Dalam artikel ini, kami akan menumpukan pada cara menggunakan pemetaan dinamik untuk mencapai keupayaan carian yang fleksibel. 1. Pengenalan kepada pemetaan dinamik Dalam Elasticsearch, pemetaan (mapp

Cara menggunakan API Amap dalam php untuk melaksanakan carian kabur nama tempat Cara menggunakan API Amap dalam php untuk melaksanakan carian kabur nama tempat Jul 31, 2023 pm 02:13 PM

Gambaran keseluruhan cara menggunakan API Amap dalam PHP untuk melaksanakan carian kabur bagi nama tempat: Apabila membangunkan aplikasi berdasarkan lokasi geografi, kadangkala perlu melakukan carian kabur berdasarkan nama tempat yang dimasukkan oleh pengguna dan mengembalikan hasil carian. . Amap menyediakan set API yang kaya yang boleh melaksanakan fungsi ini dengan mudah. Artikel ini akan memperkenalkan cara menggunakan API Amap dalam PHP untuk melaksanakan carian kabur bagi nama tempat dan memberikan anda contoh kod. Langkah: Dapatkan kunci pembangun API Amap Pertama, anda perlu membuka platform terbuka Amap

Cara menggunakan PHP dan Elasticsearch untuk menyerlahkan hasil carian Cara menggunakan PHP dan Elasticsearch untuk menyerlahkan hasil carian Jul 17, 2023 pm 09:24 PM

Cara menggunakan PHP dan Elasticsearch untuk mencapai hasil carian yang diserlahkan Pengenalan: Dalam dunia Internet moden, enjin carian telah menjadi cara utama untuk orang ramai mendapatkan maklumat. Untuk meningkatkan kebolehbacaan dan pengalaman pengguna hasil carian, menyerlahkan kata kunci carian telah menjadi keperluan biasa. Artikel ini akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk mencapai hasil carian yang diserlahkan. 1. Persediaan Sebelum memulakan, kita perlu memastikan PHP dan Elasticsearch telah dipasang dan dikonfigurasikan dengan betul.

Kajian mendalam tentang sintaks pertanyaan Elasticsearch dan pertempuran praktikal Kajian mendalam tentang sintaks pertanyaan Elasticsearch dan pertempuran praktikal Oct 03, 2023 am 08:42 AM

Kajian mendalam sintaks pertanyaan Elasticsearch dan pengenalan praktikal: Elasticsearch ialah enjin carian sumber terbuka berdasarkan Lucene Ia digunakan terutamanya untuk carian dan analisis yang diedarkan Ia digunakan secara meluas dalam carian teks penuh data berskala besar , sistem pengesyoran dan senario lain. Apabila menggunakan Elasticsearch untuk pertanyaan data, penggunaan fleksibel sintaks pertanyaan adalah kunci untuk meningkatkan kecekapan pertanyaan. Artikel ini akan menyelidiki sintaks pertanyaan Elasticsearch dan memberikannya berdasarkan kes sebenar.

Analisis log dan pemantauan pengecualian berdasarkan Elasticsearch dalam PHP Analisis log dan pemantauan pengecualian berdasarkan Elasticsearch dalam PHP Oct 03, 2023 am 10:03 AM

Ringkasan analisis log dan pemantauan pengecualian berdasarkan Elasticsearch dalam PHP: Artikel ini akan memperkenalkan cara menggunakan pangkalan data Elasticsearch untuk analisis log dan pemantauan pengecualian. Melalui contoh kod PHP ringkas, ia menunjukkan cara untuk menyambung ke pangkalan data Elasticsearch, menulis data log ke pangkalan data dan menggunakan fungsi pertanyaan kuat Elasticsearch untuk menganalisis dan memantau anomali dalam log. Pengenalan: Analisis log dan pemantauan pengecualian adalah

See all articles