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 중국어 웹사이트의 기타 관련 기사를 참조하세요!