>백엔드 개발 >PHP 튜토리얼 >PHP와 Elasticsearch를 사용하여 검색 결과를 추천하는 방법

PHP와 Elasticsearch를 사용하여 검색 결과를 추천하는 방법

PHPz
PHPz원래의
2023-07-17 08:32:021620검색

PHP 및 Elasticsearch를 사용하여 검색 결과를 추천하는 방법

인터넷 기술의 지속적인 발전으로 검색 엔진은 정보를 얻기 위한 첫 번째 선택이 되었습니다. 더 나은 사용자 경험을 제공하기 위해 검색 엔진은 사용자에게 보다 관련성이 높고 개인화된 검색 결과를 제공하는 추천 시스템을 도입했습니다. 이 글에서는 PHP와 Elasticsearch를 사용하여 검색 결과 추천을 구현하는 방법을 소개합니다.

  1. Elasticsearch 설치

먼저 Elasticsearch를 설치해야 합니다. Elasticsearch 공식 웹사이트에서 최신 안정 버전을 다운로드하고 공식 문서에 따라 설치할 수 있습니다.

  1. Create Index

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()方法来创建索引。

  1. 存储搜索历史

当用户进行搜索操作时,我们需要将用户的搜索记录存储到Elasticsearch中。以下是一个简单的示例代码:

$params = [
    'index' => 'search_history',
    'type' => 'search',
    'body' => [
        'user_id' => 1,
        'keyword' => 'Elasticsearch'
    ]
];

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

这段代码使用了index()方法将用户搜索历史存储到Elasticsearch中。其中,index参数指定了索引名称,type参数指定了文档类型,body参数则是具体的文档内容。

  1. 获取搜索推荐

在得到用户的搜索历史后,我们可以根据用户的搜索历史来生成搜索推荐。以下是一个简单的示例代码:

$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

    스토리지 검색 기록
    1. 사용자가 검색 작업을 수행하면 해당 사용자의 검색 기록을 Elasticsearch에 저장해야 합니다. 다음은 간단한 샘플 코드입니다.
    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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