文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-10-21 22:48

关注

引言:
在现代互联网时代,搜索功能是网站和应用不可或缺的一部分。如何通过搜索引擎快速准确地展示用户想要的结果,一直是开发者们面临的挑战。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 进行搜索结果展示和定制化有所帮助。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯