首頁 >後端開發 >php教程 >PHP 中基於 Elasticsearch 的搜尋結果展示與客製化技術

PHP 中基於 Elasticsearch 的搜尋結果展示與客製化技術

WBOY
WBOY原創
2023-10-03 09:00:401215瀏覽

PHP 中基于 Elasticsearch 的搜索结果展示与定制技术

PHP 中基於Elasticsearch 的搜尋結果展示與客製化技術

引言:
在現代互聯網時代,搜尋功能是網站和應用程式不可或缺的一部分。如何透過搜尋引擎快速且準確地展示使用者想要的結果,一直是開發者面臨的挑戰。 Elasticsearch 是一款開源的分散式全文搜尋引擎,以其高效能、​​強大的搜尋和分析能力在開發者中廣泛流行。本文將介紹 PHP 中基於 Elasticsearch 的搜尋結果展示與客製化技術,並提供具體的程式碼範例。

一、安裝與設定 Elasticsearch

首先,我們需要安裝並啟動 Elasticsearch。可以到 Elasticsearch 的官方網站(https://www.elastic.co/)下載最新的穩定版本,並按照官方文件進行安裝和設定。

二、 PHP Elasticsearch 用戶端程式庫

在 PHP 中,我們可以使用官方提供的 Elasticsearch 用戶端程式庫來與 Elasticsearch 進行互動。可以使用Composer 進行安裝:

composer require elasticsearch/elasticsearch

安裝完成後,可以在專案中引入Elasticsearch 用戶端庫:

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

三、建立索引與文件

#在開始搜尋之前,我們需要建立一個索引並添加一些文件到Elasticsearch 中。以下是一個範例的 PHP 程式碼:

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0
        ],
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text'
                ],
                'content' => [
                    'type' => 'text'
                ]
            ]
        ]
    ]
];

$response = $client->indices()->create($params);

$params = [
    'index' => 'my_index',
    'body' => [
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '1'
            ]
        ],
        [
            'title' => 'PHP Elasticsearch 搜索实战',
            'content' => '在 PHP 中使用 Elasticsearch 进行高效的搜索技术实战。'
        ],
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '2'
            ]
        ],
        [
            'title' => 'Elasticsearch 基础教程',
            'content' => '学习使用 Elasticsearch 基础教程,从入门到精通。'
        ],
    ]
];

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

四、搜尋與展示

接下來,我們將展示如何在 PHP 中使用 Elasticsearch 進行搜索,並將結果顯示給使用者。以下是一個範例的 PHP 程式碼:

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'Elasticsearch'
            ]
        ]
    ]
];

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

foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . '<br>';
    echo $hit['_source']['content'] . '<br><br>';
}

以上程式碼將搜尋索引為 my_index 中標題中包含 Elasticsearch 的文檔,並將結果列印出來。

五、搜尋結果客製化

除了簡單的搜尋和展示,我們還可以對搜尋結果進行客製化處理。以下是一個客製化處理搜尋結果的範例程式碼:

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'Elasticsearch'
            ]
        ],
        'highlight' => [
            'pre_tags' => '<strong>',
            'post_tags' => '</strong>',
            'fields' => [
                'title' => new stdClass(),
                'content' => new stdClass()
            ]
        ]
    ]
];

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

foreach ($response['hits']['hits'] as $hit) {
    $title = isset($hit['highlight']['title']) ? implode(' ', $hit['highlight']['title']) : $hit['_source']['title'];
    $content = isset($hit['highlight']['content']) ? implode(' ', $hit['highlight']['content']) : $hit['_source']['content'];

    echo $title . '<br>';
    echo $content . '<br><br>';
}

以上程式碼將引入高亮的功能,將搜尋到的結果中匹配的關鍵字以8e99a69fbe029cd4e2b854e244eab143 標籤進行標記。

結論:
透過使用 Elasticsearch 和 PHP 用戶端程式庫,我們可以在 PHP 中快速實現搜尋功能,並且可以對搜尋結果進行客製化處理。希望本文的內容能對大家在 PHP 中使用 Elasticsearch 進行搜尋結果展示和客製化有所幫助。

以上是PHP 中基於 Elasticsearch 的搜尋結果展示與客製化技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn