>백엔드 개발 >PHP 튜토리얼 >PHP의 Elasticsearch를 기반으로 한 상품 추천 및 개인화 검색

PHP의 Elasticsearch를 기반으로 한 상품 추천 및 개인화 검색

PHPz
PHPz원래의
2023-10-03 08:09:11805검색

PHP 中基于 Elasticsearch 的商品推荐与个性化搜索

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

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