>  기사  >  백엔드 개발  >  PHP의 Elasticsearch 기반 검색 결과 표시 및 사용자 정의 기술

PHP의 Elasticsearch 기반 검색 결과 표시 및 사용자 정의 기술

WBOY
WBOY원래의
2023-10-03 09:00:401147검색

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

PHP의 Elasticsearch를 기반으로 한 검색 결과 표시 및 사용자 정의 기술

소개:
현대 인터넷 시대에 검색 기능은 웹사이트와 애플리케이션의 필수적인 부분입니다. 검색엔진을 통해 사용자가 원하는 결과를 어떻게 빠르고 정확하게 표시할 것인가는 개발자들의 항상 과제였습니다. Elasticsearch는 고성능, 강력한 검색 및 분석 기능으로 개발자들 사이에서 널리 인기를 얻고 있는 오픈 소스 분산형 전체 텍스트 검색 엔진입니다. 이 기사에서는 PHP의 Elasticsearch 기반 검색 결과 표시 및 사용자 정의 기술을 소개하고 구체적인 코드 예제를 제공합니다.

1. Elasticsearch 설치 및 구성

먼저 Elasticsearch를 설치하고 시작해야 합니다. Elasticsearch 공식 홈페이지(https://www.elastic.co/)에서 최신 안정 버전을 다운로드 하신 후, 공식 문서에 따라 설치 및 구성하시면 됩니다.

2. PHP Elasticsearch 클라이언트 라이브러리

PHP에서는 공식적으로 제공되는 Elasticsearch 클라이언트 라이브러리를 사용하여 Elasticsearch와 상호 작용할 수 있습니다. Composer를 사용하여 설치할 수 있습니다:

composer require elasticsearch/elasticsearch

설치가 완료된 후 Elasticsearch 클라이언트 라이브러리를 프로젝트에 도입할 수 있습니다.

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

3. 인덱스 및 문서 생성

검색을 시작하기 전에 인덱스 및 문서를 생성해야 합니다. 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);

IV. 검색 및 표시

다음으로 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>';
}

위 코드는 제목에 Elasticsearch가 포함된 my_index에 색인화된 문서를 검색하고 결과를 인쇄합니다. 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

5. 검색결과 맞춤설정


간단한 검색 및 표시 외에도 검색결과를 맞춤설정할 수도 있습니다. 다음은 검색 결과를 맞춤 처리하기 위한 샘플 코드입니다.

rrreee🎜위 코드는 강조 기능을 도입하고 검색 결과에서 일치하는 키워드를 8e99a69fbe029cd4e2b854e244eab143 태그로 표시합니다. 🎜🎜결론: 🎜Elasticsearch와 PHP 클라이언트 라이브러리를 사용하면 PHP에서 검색 기능을 빠르게 구현하고 검색 결과를 사용자 정의할 수 있습니다. 이 기사의 내용이 PHP에서 Elasticsearch를 사용하여 검색 결과를 표시하고 사용자 정의하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 PHP의 Elasticsearch 기반 검색 결과 표시 및 사용자 정의 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.