PHP 및 Elasticsearch를 사용하여 검색 결과를 추천하는 방법
인터넷 기술의 지속적인 발전으로 검색 엔진은 정보를 얻기 위한 첫 번째 선택이 되었습니다. 더 나은 사용자 경험을 제공하기 위해 검색 엔진은 사용자에게 보다 관련성이 높고 개인화된 검색 결과를 제공하는 추천 시스템을 도입했습니다. 이 글에서는 PHP와 Elasticsearch를 사용하여 검색 결과 추천을 구현하는 방법을 소개합니다.
먼저 Elasticsearch를 설치해야 합니다. Elasticsearch 공식 웹사이트에서 최신 안정 버전을 다운로드하고 공식 문서에 따라 설치할 수 있습니다.
Elasticsearch에서는 데이터가 인덱스 형태로 저장됩니다. 인덱스를 생성하기 전에 인덱스 매핑을 정의해야 합니다. 본 글에서는 사용자 검색 기록을 추천 기반으로 활용하기 때문에 사용자 검색 기록을 포함하는 인덱스를 생성해야 합니다. 인덱스 이름이 "search_history"이고 문서 유형이 "search"라고 가정하면 다음 코드를 사용하여 인덱스를 생성할 수 있습니다.
require 'vendor/autoload.php'; use ElasticsearchClientBuilder; $client = ClientBuilder::create()->build(); $params = [ 'index' => 'search_history', 'body' => [ 'mappings' => [ 'search' => [ 'properties' => [ 'user_id' => ['type' => 'integer'], 'keyword' => ['type' => 'text'] ] ] ] ] ]; $response = $client->indices()->create($params);
이 코드는 Elasticsearch-PHP 라이브러리를 사용하여 Elasticsearch와 상호 작용합니다. 먼저 Elasticsearch 클라이언트 객체를 생성한 다음 인덱스 매핑을 정의하고 indices()->create()
메서드를 사용하여 인덱스를 생성합니다. indices()->create()
方法来创建索引。
当用户进行搜索操作时,我们需要将用户的搜索记录存储到Elasticsearch中。以下是一个简单的示例代码:
$params = [ 'index' => 'search_history', 'type' => 'search', 'body' => [ 'user_id' => 1, 'keyword' => 'Elasticsearch' ] ]; $response = $client->index($params);
这段代码使用了index()
方法将用户搜索历史存储到Elasticsearch中。其中,index
参数指定了索引名称,type
参数指定了文档类型,body
参数则是具体的文档内容。
在得到用户的搜索历史后,我们可以根据用户的搜索历史来生成搜索推荐。以下是一个简单的示例代码:
$params = [ 'index' => 'search_history', 'type' => 'search', 'body' => [ 'query' => [ 'match' => [ 'keyword' => 'Elasticsearch' ] ], 'aggs' => [ 'recommended_keywords' => [ 'terms' => [ 'field' => 'keyword' ] ] ] ] ]; $response = $client->search($params); $recommended_keywords = $response['aggregations']['recommended_keywords']['buckets'];
这段代码使用了search()
方法来进行搜索操作,并使用了聚合(aggregation)来获取推荐的关键词。聚合是Elasticsearch中一种常见的分析操作,用于统计、分组和过滤数据。
以上代码中,query
参数用于指定搜索条件,这里以"keyword"字段匹配"Elasticsearch"作为示例。而aggs
参数则用于定义聚合操作,terms
参数指定了按照"keyword"字段进行聚合,并将结果存储在"recommended_keywords"中。最后,我们将推荐的关键词保存在$recommended_keywords
foreach ($recommended_keywords as $keyword) { echo $keyword['key'] . ' (' . $keyword['doc_count'] . ')'; }
이 코드는 index()
메서드를 사용하여 사용자 검색 기록을 Elasticsearch에 저장합니다. 그 중 index
매개변수는 인덱스 이름을 지정하고, type
매개변수는 문서 유형을 지정하며, body
매개변수는 특정 문서 내용을 지정합니다.
검색 추천 받기
사용자의 검색 기록을 가져온 후 사용자의 검색 기록을 기반으로 검색 추천을 생성할 수 있습니다. 다음은 간단한 샘플 코드입니다.rrreee
이 코드는search()
메서드를 사용하여 검색 작업을 수행하고 집계를 사용하여 추천 키워드를 얻습니다. 집계는 데이터를 계산, 그룹화 및 필터링하는 데 사용되는 Elasticsearch의 일반적인 분석 작업입니다. 🎜🎜위 코드에서는 query
매개변수를 사용하여 검색 조건을 지정했습니다. 여기서는 "Elasticsearch"와 일치하는 "키워드" 필드를 예로 사용했습니다. aggs
매개변수는 집계 연산을 정의하는 데 사용되며, terms
매개변수는 "keyword" 필드에 따라 집계를 지정하고 그 결과를 "recommended_keywords"에 저장합니다. 마지막으로, 나중에 사용할 수 있도록 추천 키워드를 $recommended_keywords
변수에 저장합니다. 🎜🎜🎜검색 추천 표시🎜🎜🎜마지막으로 추천 키워드를 사용자에게 표시할 수 있습니다. 다음은 간단한 샘플 코드입니다. 🎜rrreee🎜이 코드는 추천 키워드를 반복하고 키워드와 해당 키워드의 발생 횟수를 사용자에게 표시합니다. 특정 요구에 따라 추천 키워드를 기반으로 검색 결과 및 관련 검색어 자동 완성 등의 기능도 제공할 수 있습니다. 🎜🎜결론🎜🎜이 글에서는 PHP와 Elasticsearch를 사용하여 검색 결과 추천을 구현하는 방법을 소개합니다. 사용자의 검색 기록을 저장하고 Elasticsearch의 집계 기능을 사용하여 추천 키워드를 생성함으로써 사용자에게 더 나은 검색 경험을 제공할 수 있습니다. 물론, 위의 내용은 단순한 예시에 불과하며, 실제 추천 시스템에서는 보다 개인화된 추천 결과를 제공하기 위해 보다 복잡한 알고리즘과 전략이 필요할 수 있습니다. 이 기사가 검색 엔진 및 추천 시스템을 구축할 때 도움이 되기를 바랍니다. 🎜위 내용은 PHP와 Elasticsearch를 사용하여 검색 결과를 추천하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!