>백엔드 개발 >PHP 튜토리얼 >PHP와 Elasticsearch로 구현된 다국어 검색 솔루션

PHP와 Elasticsearch로 구현된 다국어 검색 솔루션

PHPz
PHPz원래의
2023-07-12 20:19:37758검색

PHP와 Elasticsearch로 구현된 다국어 검색 솔루션

글로벌 인터넷의 급속한 발전으로 인해 다국어 검색을 지원해야 하는 애플리케이션이 점점 더 많아지고 있습니다. 이러한 다국어 환경에서는 효율적이고 정확한 검색 시스템을 구현하는 것이 사용자 경험과 데이터 쿼리에 매우 중요합니다. 이 기사에서는 PHP와 Elasticsearch를 사용하여 다국어 검색 솔루션을 구현하는 방법을 소개합니다.

1. Elasticsearch를 선택하는 이유는 무엇인가요?
Elasticsearch는 강력한 전체 텍스트 검색 기능과 다중 언어를 지원하는 단어 분할을 통해 다중 언어 검색 요구를 잘 충족할 수 있는 오픈 소스 분산 검색 및 분석 엔진입니다. 기존 관계형 데이터베이스와 비교하여 Elasticsearch는 더 높은 성능, 더 유연한 쿼리 구문 및 더 나은 확장성을 제공하므로 검색 엔진 구축에 매우 적합합니다.

2. Elasticsearch 설치 및 구성
먼저 서버에 Elasticsearch를 설치하고 기본 구성을 수행해야 합니다. 구체적인 설치 및 구성 절차는 Elasticsearch 공식 문서를 참조하세요. 설치가 완료된 후 다중 언어 검색을 지원하려면 인덱스를 생성하고 해당 매핑을 정의해야 합니다.

3. 인덱스 및 매핑 만들기
Elasticsearch에서 인덱스는 관계형 데이터베이스의 테이블과 유사하며 데이터를 저장하고 인덱스하는 데 사용됩니다. HTTP 요청을 보내 인덱스를 생성하고 해당 매핑을 정의할 수 있습니다. 다음은 간단한 예입니다.

PUT /my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      },
      "content": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      }
    }
  }
}

위 예에서는 "my_index"라는 인덱스를 생성하고 "title"과 "content"라는 두 개의 필드를 정의했습니다. 각 필드에는 "english"와 "chinese"라는 두 개의 하위 필드가 있으며, 이는 각각 영어와 중국어 단어 분할 결과를 저장하는 데 사용됩니다. 영어 필드는 Elasticsearch에 내장된 영어 단어 분할기를 사용하고, 중국어 필드는 중국어 단어 분할기 ik_max_word를 사용합니다.

4. PHP에서의 검색 작업
PHP에서는 Elasticsearch에서 제공하는 공식 클라이언트 라이브러리를 사용하여 검색 작업을 수행할 수 있습니다. 먼저 elasticsearch/elasticsearch 패키지를 설치해야 합니다. Composer를 사용하여 설치를 완료할 수 있으며 다음 이름을 실행하면 됩니다.

composer require elasticsearch/elasticsearch

다음으로 elasticsearch 패키지를 도입하고 연결을 설정해야 합니다.

require 'vendor/autoload.php';

$client = new ElasticsearchClient([
    'hosts' => ['localhost:9200']
]);

연결을 설정한 후 검색 작업 수행을 시작할 수 있습니다. 다음은 간단한 PHP 검색 코드 예입니다.

$params = [
    'index' => 'my_index',
    'type' => '_doc',
    'body' => [
        'query' => [
            'multi_match' => [
                'query' => 'keyword',
                'fields' => ['title.english', 'content.english', 'title.chinese', 'content.chinese']
            ]
        ]
    ]
];

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

위 예에서는 쿼리 키워드와 검색 필드가 포함된 요청 본문을 구성한 다음 Elasticsearch 클라이언트의 검색 방법을 사용하여 검색 작업을 수행합니다. 검색 결과는 $response 변수에 저장됩니다.

5. 결과 분석 및 표시
마지막 단계는 검색 결과를 구문 분석하여 사용자에게 표시하는 것입니다. Elasticsearch의 검색 결과는 여러 문서를 포함하는 데이터 구조이며 필요에 따라 이러한 문서를 탐색하고 구문 분석하고 표시해야 합니다.

다음은 간단한 예제 코드입니다.

foreach ($response['hits']['hits'] as $hit) {
    $title = $hit['_source']['title'];
    $content = $hit['_source']['content'];

    // 在这里进行结果展示或其他操作
}

위 예제에서는 검색 결과의 각 문서를 반복하고 해당 문서에서 제목과 내용을 가져옵니다. 실제 필요에 따라 결과에 대해 표시, 정렬 또는 기타 작업을 수행할 수 있습니다.

6. 요약
PHP와 Elasticsearch를 사용하여 다국어 검색 솔루션을 구현하면 사용자 경험이 크게 향상되고 정확한 검색 결과를 제공할 수 있습니다. 합리적인 인덱스 매핑과 Elasticsearch가 제공하는 강력한 검색 기능을 활용하여 고성능 다국어 검색 시스템을 구축할 수 있습니다. 이 글의 내용이 여러분에게 도움이 되기를 바라며, 훌륭한 다국어 검색 시스템을 구축하시길 바라겠습니다!

위 내용은 PHP와 Elasticsearch로 구현된 다국어 검색 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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