PHP와 Elasticsearch를 사용하여 자동 완성 검색 기능을 구축하는 방법

WBOY
풀어 주다: 2023-07-17 20:10:01
원래의
1523명이 탐색했습니다.

PHP와 Elasticsearch를 사용하여 자동 완성 검색 기능을 구축하는 방법

제목: PHP와 Elasticsearch를 사용하여 자동 완성 검색 기능을 구축하는 방법

소개:
최신 웹 애플리케이션에서 검색 기능은 필수적인 부분입니다. 이를 통해 사용자 경험이 크게 향상되고 사용자가 필요한 정보를 더 빠르게 찾을 수 있습니다. 일반적인 검색 기능 중 하나는 사용자가 검색어를 입력할 때 가능한 검색 제안을 즉시 표시하는 자동 완성입니다. 이 기사에서는 PHP와 Elasticsearch를 사용하여 자동 완성 검색 기능을 구축하는 방법을 소개합니다.

1단계: Elasticsearch 설치 및 구성
먼저 Elasticsearch를 설치하고 구성해야 합니다. 이 단계를 완료하려면 공식 Elasticsearch 설명서를 참조하세요.

2단계: Elasticsearch 인덱스 생성
다음으로, 검색 데이터를 저장할 Elasticsearch 인덱스를 생성해야 합니다. 전자상거래 웹사이트에 대한 자동완성 검색 기능을 구축한다고 가정해 보겠습니다. "products"라는 색인을 생성할 수 있습니다. 이 색인 내에서 자동 완성 제안을 저장하기 위해 "autocomplete"라는 필드를 정의할 수 있습니다.

다음은 인덱스를 생성하는 샘플 코드입니다.

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'products',
    'body' => [
        'mappings' => [
            'properties' => [
                'autocomplete' => [
                    'type' => 'text',
                    'analyzer' => 'autocomplete',
                    'search_analyzer' => 'standard',
                ]
            ]
        ],
        'settings' => [
            'analysis' => [
                'analyzer' => [
                    'autocomplete' => [
                        'type' => 'custom',
                        'tokenizer' => 'standard',
                        'filter' => ['lowercase', 'autocomplete_filter'],
                    ],
                ],
                'filter' => [
                    'autocomplete_filter' => [
                        'type' => 'edge_ngram',
                        'min_gram' => 1,
                        'max_gram' => 20,
                    ],
                ],
            ],
        ],
    ],
];

$response = $client->indices()->create($params);
로그인 후 복사

3단계: Elasticsearch로 데이터 가져오기
다음으로 데이터를 Elasticsearch 인덱스로 가져와야 합니다. "products.csv"라는 제품 데이터 파일이 이미 있다고 가정해 보겠습니다. PHP의 CSV 라이브러리를 사용하여 파일을 읽고 데이터를 Elasticsearch로 가져올 수 있습니다.

다음은 데이터 가져오기를 위한 샘플 코드입니다.

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$csvFile = fopen('products.csv', 'r');

while (($data = fgetcsv($csvFile, 1000, ',')) !== false) {
    $params = [
        'index' => 'products',
        'body' => [
            'autocomplete' => $data[1],
        ],
    ];

    $client->index($params);
}

fclose($csvFile);
로그인 후 복사

4단계: 자동 완성 검색 기능 구현
이제 색인을 생성하고 데이터를 가져왔으므로 자동 완성 검색 기능 구현을 시작할 수 있습니다. Elasticsearch의 "match_phrase_prefix" 쿼리를 사용하여 이 기능을 구현할 수 있습니다.

자동 완성 검색 기능을 구현하는 샘플 코드는 다음과 같습니다.

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'match_phrase_prefix' => [
                'autocomplete' => [
                    'query' => $_GET['term']
                ]
            ],
        ],
    ],
];

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

$suggestions = [];

foreach ($response['hits']['hits'] as $hit) {
    $suggestions[] = $hit['_source']['autocomplete'];
}

echo json_encode($suggestions);
로그인 후 복사

결론:
이 글에서는 PHP와 Elasticsearch를 사용하여 자동 완성 검색 기능을 구축하는 방법을 소개했습니다. Elasticsearch를 설치 및 구성하고, 인덱스를 생성하고 데이터를 가져오고, 자동 완성 검색 기능을 구현함으로써 사용자가 필요한 정보를 더 빠르게 찾고 사용자 경험을 개선할 수 있습니다. 이 기사가 도움이 되기를 바랍니다!

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿