제목: PHP의 Elasticsearch를 기반으로 한 상품 추천 및 개인화 검색
기사 텍스트:
소개:
전자상거래가 지속적으로 발전함에 따라 상품 추천 및 개인화 검색이 점점 더 중요해지고 있습니다. 사용자는 수많은 상품 중에서 자신의 요구에 맞는 상품을 빨리 찾고 싶어하고, 가맹점 역시 추천 시스템을 통해 사용자에게 가장 적합한 상품을 진열해야 합니다. PHP 개발에서 Elasticsearch를 사용하여 제품 추천 및 개인화된 검색을 구현하는 것은 가장 일반적인 솔루션 중 하나입니다. 본 글에서는 Elasticsearch를 기반으로 상품 추천과 개인화 검색을 구현하는 방법을 소개하고, 구체적인 코드 예시를 제공하겠습니다.
1. Elasticsearch의 기본 개념
Elasticsearch는 방대한 양의 데이터를 빠르게 색인화하고 검색할 수 있는 오픈 소스 고성능 검색 엔진입니다. Elasticsearch를 사용하기 전에 다음 기본 개념을 이해해야 합니다.
1.1 인덱스: 관계형 데이터베이스의 데이터베이스와 유사하게 인덱스는 데이터를 그룹화하고 구성하는 데 사용되는 논리적 개념입니다. 각 인덱스는 여러 유형(유형)을 포함할 수 있습니다.
1.2 유형: 관계형 데이터베이스의 테이블과 유사하게 각 유형에는 고유한 필드와 속성이 있습니다.
1.3 문서: 관계형 데이터베이스의 행이나 레코드와 마찬가지로 문서는 Elasticsearch 저장소의 기본 단위입니다.
1.4 매핑: 관계형 데이터베이스의 스키마와 유사하게 매핑은 필드의 유형과 속성을 정의하는 데 사용됩니다.
2. 상품 추천 구현
상품 추천에서는 Elasticsearch의 관련성 점수를 사용하여 이를 달성할 수 있습니다. 구체적인 단계는 다음과 같습니다.
2.1 인덱스 생성 및 유형
먼저, 제품 데이터를 저장하기 위한 인덱스를 생성하고 제품 정보를 설명하는 유형을 정의해야 합니다. Elasticsearch에서 제공하는 PHP 클라이언트를 사용하여 Elasticsearch 서버에 연결하고 다음 코드를 실행할 수 있습니다.
require 'vendor/autoload.php'; $client = ElasticsearchClientBuilder::create()->build(); $params = [ 'index' => 'product', 'body' => [ 'mappings' => [ 'type' => [ 'properties' => [ 'name' => [ 'type' => 'text', 'analyzer' => 'standard' ], 'category' => [ 'type' => 'keyword' ], 'price' => [ 'type' => 'double' ] ] ] ] ] ]; $client->indices()->create($params);
2.2 제품 데이터 가져오기
다음으로 제품 데이터를 Elasticsearch로 가져와야 합니다. Elasticsearch의 일괄 삽입 기능을 이용하면 상품 데이터를 일괄적으로 Elasticsearch로 가져올 수 있습니다. 샘플 코드는 다음과 같습니다.
$products = [ ['name' => 'iPhone 12', 'category' => '手机', 'price' => 7999], ['name' => 'MacBook Pro', 'category' => '电脑', 'price' => 10999], ['name' => 'AirPods Pro', 'category' => '耳机', 'price' => 1999] ]; $params = [ 'index' => 'product', 'type' => 'type', 'body' => [] ]; foreach ($products as $product) { $params['body'][] = [ 'index' => [ '_index' => 'product', '_type' => 'type' ] ]; $params['body'][] = $product; } $client->bulk($params);
2.3 상품 추천 쿼리
상품 추천을 구현하기 위해 검색 및 기타 상품에 대한 쿼리를 작성할 수 있습니다. 더 높은 상관관계를 가지고 있습니다. 샘플 코드는 다음과 같습니다.
$params = [ 'index' => 'product', 'type' => 'type', 'body' => [ 'query' => [ 'more_like_this' => [ 'fields' => ['name'], 'like' => [ ['_index' => 'product', '_id' => '1'] // 假设用户感兴趣的商品编号为 1 ], 'min_term_freq' => 1, 'max_query_terms' => 20 ] ] ] ]; $response = $client->search($params);
위 코드는 사용자가 관심 있는 제품과 관련성이 높은 다른 제품 집합을 반환합니다.
3. 개인화된 검색 구현
개인화된 검색은 사용자의 검색 습관과 선호도에 따라 더욱 개인화된 검색 결과를 제공할 수 있습니다. 개인화된 검색을 구현하는 단계는 다음과 같습니다.
3.1 사용자 검색 기록 기록
먼저 사용자의 검색 기록을 기록해야 합니다. Redis 또는 데이터베이스를 사용하여 사용자의 검색 기록을 저장할 수 있습니다. 샘플 코드는 다음과 같습니다.
$userId = 1; // 假设用户编号为 1 $keyword = 'iPhone'; // 存储用户搜索记录 $redis->sadd("user:$userId:search_history", $keyword);
3.2 개인화 검색어 구성
사용자의 검색 기록을 기반으로 사용자가 자주 검색한 키워드를 쿼리 조건으로 사용하여 쿼리를 구성할 수 있습니다. 샘플 코드는 다음과 같습니다.
$params = [ 'index' => 'product', 'type' => 'type', 'body' => [ 'query' => [ 'bool' => [ 'should' => [ ['match' => ['name' => $keyword1]], // 用户搜索历史中的关键词1 ['match' => ['name' => $keyword2]], // 用户搜索历史中的关键词2 // ... ] ] ] ] ]; $response = $client->search($params);
위 코드는 사용자의 검색 기록을 기반으로 구축된 맞춤형 검색 결과를 반환합니다.
결론:
Elasticsearch를 이용하면 상품 추천과 개인화 검색 기능을 쉽게 구현할 수 있습니다. 본 글에서는 Elasticsearch를 기반으로 상품 추천 및 개인화 검색을 구현하는 방법을 소개하고 구체적인 PHP 코드 예제를 제공합니다. 이 기사가 PHP 개발자에게 제품 추천 및 개인화 검색에 도움이 되기를 바랍니다.
위 내용은 PHP의 Elasticsearch를 기반으로 한 상품 추천 및 개인화 검색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!