>  기사  >  백엔드 개발  >  PHP 및 Elasticsearch를 사용하여 다국어 검색을 구현하는 방법

PHP 및 Elasticsearch를 사용하여 다국어 검색을 구현하는 방법

王林
王林원래의
2023-07-17 08:12:11773검색

PHP와 Elasticsearch를 통한 다국어 검색 구현 방법

오늘날의 인터넷 환경에서는 글로벌화가 진행되면서 다국어 검색은 많은 웹사이트에서 꼭 필요한 기능 중 하나가 되었습니다. 강력한 오픈 소스 검색 엔진인 Elasticsearch는 효율적이고 유연한 검색 기능을 갖추고 있습니다. 이 기사에서는 코드 예제와 함께 PHP 및 Elasticsearch를 통해 다국어 검색을 구현하는 방법을 소개합니다.

1. 준비
시작하기 전에 다음 환경이 설치되어 있는지 확인해야 합니다.

  1. PHP 환경: PHP가 설치되어 있고 정상적으로 실행될 수 있는지 확인하세요.
  2. Elasticsearch: Elasticsearch가 설치되어 있고 정상적으로 시작할 수 있는지 확인하세요.

2. 인덱스 생성
다국어 검색을 수행하기 전에 먼저 적합한 인덱스를 생성하고 해당 데이터를 Elasticsearch에 저장해야 합니다. 다음은 간단한 예입니다.

<?php

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$hosts = [
    'http://localhost:9200'
];

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

$params = [
    'index' => 'my_index',
    'body'  => [
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ],
                'content' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ]
            ]
        ]
    ]
];

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

위 코드에서는 Elasticsearch의 PHP 클라이언트를 사용하여 각각 기사의 제목과 내용에 해당하는 제목과 내용 필드를 포함하는 my_index라는 인덱스를 생성합니다. 두 개의 하위 필드 'zh'와 'en'이 정의되어 있으며 각각 중국어 및 영어 버전의 데이터를 저장하는 데 사용되며 해당 분석기가 지정됩니다.

3. 데이터 삽입
다음으로 후속 검색을 위해 인덱스에 일부 데이터를 삽입해야 합니다. 간단한 예는 다음과 같습니다.

<?php

$doc = [
    'title' => [
        'zh' => '中文标题',
        'en' => 'English title'
    ],
    'content' => [
        'zh' => '中文内容',
        'en' => 'English content'
    ]
];

$params = [
    'index' => 'my_index',
    'id'    => '1',
    'body'  => $doc
];

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

위 코드에서는 중국어와 영어 제목과 내용이 포함된 문서를 생성하고 이를 my_index라는 인덱스에 삽입합니다.

4. 검색
색인 구축 및 데이터 삽입이 완료되면 다국어 검색을 시작할 수 있습니다. 다음은 간단한 예입니다.

<?php

$params = [
    'index' => 'my_index',
    'body'  => [
        'query' => [
            'multi_match' => [
                'query' => '关键词',
                'fields' => ['title.zh', 'content.zh', 'title.en', 'content.en']
            ]
        ]
    ]
];

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

var_dump($response['hits']['hits']);

위 코드에서는 다국어 다중 필드 검색을 사용하여 검색할 필드와 키워드를 지정하여 검색합니다. 검색 결과는 관련성에 따라 정렬되고 일치하는 문서가 반환됩니다.

5. 요약
PHP와 Elasticsearch를 통해 다국어 검색을 구현하는 것은 복잡하지 않습니다. 다국어, 다필드 검색과 결합된 적절한 색인 구축 및 데이터 삽입을 통해 다국어 검색 기능을 빠르고 정확하게 구현할 수 있습니다. 이 기사가 도움이 되기를 바랍니다.

위 내용은 PHP 및 Elasticsearch를 사용하여 다국어 검색을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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