Home Backend Development PHP Tutorial Fuzzy search and semantic search implementation based on Elasticsearch in PHP

Fuzzy search and semantic search implementation based on Elasticsearch in PHP

Oct 03, 2023 am 08:37 AM
elasticsearch fuzzy search Semantic search

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

The implementation of fuzzy search and semantic search based on Elasticsearch in PHP requires specific code examples

In the modern Internet environment, search functions have become a must for various applications. One of the equipment functions. Traditional fuzzy search often can only perform simple matching based on keywords, but lacks an understanding of user intentions. Semantic search can better capture the user's intent and provide more precise search results. In this article, we will introduce how to use Elasticsearch to implement fuzzy search and semantic search in PHP, and give specific code examples.

Elasticsearch is an open source search engine based on Lucene, which provides rich search functions and efficient distributed search support. In PHP, we can use the official client library provided by Elasticsearch - Elasticsearch-PHP to interact with Elasticsearch.

First, we need to introduce the Elasticsearch-PHP library into the PHP project. It can be installed through Composer. You only need to add the following dependencies to the composer.json file in the project root directory:

{
  "require": {
    "elasticsearch/elasticsearch": "^7.0"
  }
}
Copy after login

and then execute the composer install command to install.

Next, we need to establish a connection with Elasticsearch. In PHP, this can be achieved through the following code:

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

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

localhost:9200 in the above code is the address and port of the Elasticsearch service. By default, the Elasticsearch listening address is localhost and the port is 9200. If Elasticsearch is running on another machine or the port is different, it needs to be modified to the corresponding value.

Now, we can start to implement the fuzzy search function. The following is a simple example:

<?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'] . "
";
}
?>
Copy after login

my_index in the above code is an index in Elasticsearch, and title is a field name. We perform fuzzy search through the match query, and use the fuzziness parameter to set the degree of fuzzy matching. AUTO means to let Elasticsearch automatically determine the degree of fuzzy matching.

Of course, if you need more complex search functions, you can also use other query types provided by Elasticsearch, such as multi_match, bool, etc. For specific usage methods, please refer to the official documentation of Elasticsearch.

Next, we will introduce how to implement the semantic search function. In order to implement semantic search, we need to use a plug-in called Elasticsearch-Elasticsearch Elasticsearch-Elasticsearch-DSL. This plug-in provides a DSL (Domain Specific Language) that can build complex queries through PHP.

First, we need to modify the composer.json file and add the following dependencies:

{
  "require": {
    "elasticsearch/elasticsearch": "^7.0",
    "elastic/elasticsearch-dsl": "^8.0"
  }
}
Copy after login

Then execute the composer install command to install.

Next, we can use Elasticsearch-Elasticsearch-DSL to build semantic queries. The following is a simple example:

<?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'] . "
";
}
?>
Copy after login

title and content in the above code are field names in Elasticsearch, which we build through MultiMatchQuery Create a multi-field query and set the degree of fuzzy matching.

Through the above code examples, we can use Elasticsearch to implement fuzzy search and semantic search functions in PHP. Of course, in actual business scenarios, the search function can be further optimized and expanded to achieve more accurate and efficient search results. Hope this article helps you!

The above is the detailed content of Fuzzy search and semantic search implementation based on Elasticsearch in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to use Elasticsearch and PHP for product search and recommendation How to use Elasticsearch and PHP for product search and recommendation Jul 09, 2023 pm 03:07 PM

How to use Elasticsearch and PHP for product search and recommendation Introduction: In today's e-commerce field, a good search and recommendation system is very important for users. Elasticsearch is a powerful and flexible open source search engine. Combined with PHP as a back-end development language, it can provide efficient product search and personalized recommendation functions for e-commerce websites. This article will introduce how to use Elasticsearch and PHP to implement product search and recommendation functions, and attach

ChatGPT Java: How to build an accurate semantic search engine ChatGPT Java: How to build an accurate semantic search engine Oct 24, 2023 am 10:21 AM

ChatGPTJava: How to build an accurate semantic search engine, requiring specific code examples. Introduction: With the rapid development of the Internet and the explosive growth of information, people often encounter poor quality and inconsistent search results in the process of obtaining the required information. Exact question. In order to provide more accurate and efficient search results, semantic search engines came into being. This article will introduce how to use ChatGPTJava to build an accurate semantic search engine and give specific code examples. 1. Understanding ChatGPTJ

How to build a user login and permission management system using Elasticsearch and PHP How to build a user login and permission management system using Elasticsearch and PHP Jul 08, 2023 pm 04:15 PM

How to use Elasticsearch and PHP to build a user login and permission management system Introduction: In the current Internet era, user login and permission management are one of the necessary functions for every website or application. Elasticsearch is a powerful and flexible full-text search engine, while PHP is a widely used server-side scripting language. This article will introduce how to combine Elasticsearch and PHP to build a simple user login and permission management system

php Elasticsearch: How to use dynamic mapping to achieve flexible search functionality? php Elasticsearch: How to use dynamic mapping to achieve flexible search functionality? Sep 13, 2023 am 10:21 AM

PHPElasticsearch: How to use dynamic mapping to achieve flexible search capabilities? Introduction: Search functionality is an integral part of developing modern applications. Elasticsearch is a powerful search and analysis engine that provides rich functionality and flexible data modeling. In this article, we will focus on how to use dynamic mapping to achieve flexible search capabilities. 1. Introduction to dynamic mapping In Elasticsearch, mapping (mapp

How to use Amap API in php to implement fuzzy search of place names How to use Amap API in php to implement fuzzy search of place names Jul 31, 2023 pm 02:13 PM

Overview of how to use the Amap API in PHP to implement fuzzy search of place names: When developing an application based on geographical location, sometimes it is necessary to perform a fuzzy search based on the place name entered by the user and return the search results. Amap provides a rich set of APIs that can easily implement this function. This article will introduce how to use the Amap API in PHP to implement fuzzy search of place names and provide you with code examples. Steps: Obtain the developer key of the Amap API. First, you need to open the Amap open platform

How to use PHP and Elasticsearch to highlight search results How to use PHP and Elasticsearch to highlight search results Jul 17, 2023 pm 09:24 PM

How to use PHP and Elasticsearch to achieve highlighted search results Introduction: In the modern Internet world, search engines have become the main way for people to obtain information. In order to improve the readability and user experience of search results, highlighting search keywords has become a common requirement. This article will introduce how to use PHP and Elasticsearch to achieve highlighted search results. 1. Preparation Before starting, we need to ensure that PHP and Elasticsearch have been installed and configured correctly.

In-depth study of Elasticsearch query syntax and practical combat In-depth study of Elasticsearch query syntax and practical combat Oct 03, 2023 am 08:42 AM

In-depth study of Elasticsearch query syntax and practical introduction: Elasticsearch is an open source search engine based on Lucene. It is mainly used for distributed search and analysis. It is widely used in full-text search of large-scale data, log analysis, recommendation systems and other scenarios. When using Elasticsearch for data query, flexible use of query syntax is the key to improving query efficiency. This article will delve into the Elasticsearch query syntax and give it based on actual cases.

Log analysis and exception monitoring based on Elasticsearch in PHP Log analysis and exception monitoring based on Elasticsearch in PHP Oct 03, 2023 am 10:03 AM

Summary of log analysis and exception monitoring based on Elasticsearch in PHP: This article will introduce how to use the Elasticsearch database for log analysis and exception monitoring. Through concise PHP code examples, it shows how to connect to the Elasticsearch database, write log data to the database, and use Elasticsearch's powerful query function to analyze and monitor anomalies in the logs. Introduction: Log analysis and exception monitoring are

See all articles