PHP와 Elasticsearch를 사용하여 검색 결과를 표시하고 탐색하는 방법

WBOY
풀어 주다: 2023-07-18 11:14:02
원래의
847명이 탐색했습니다.

PHP 및 Elasticsearch를 사용하여 검색 결과를 표시하고 탐색하는 방법

인터넷의 급속한 발전으로 검색 기능은 다양한 웹사이트와 애플리케이션의 표준 기능이 되었습니다. 검색 결과를 효율적으로 표시하고 우수한 탐색 경험을 제공하는 방법은 웹 사이트 개발자가 직면한 중요한 과제가 되었습니다. 이 기사에서는 PHP와 Elasticsearch를 사용하여 검색 결과 표시 및 탐색 기능을 구현하는 방법을 소개합니다.

1. 개발 환경 설정

먼저 PHP 및 Elasticsearch용 개발 환경을 설정해야 합니다. PHP 및 Elasticsearch 관련 패키지를 설치했는지 확인하세요.

2. 인덱스 만들기

시작하기 전에 데이터를 저장할 인덱스를 만들어야 합니다. 제품 검색 기능을 만들고 싶다고 가정하면 "제품"이라는 색인을 만들 수 있습니다. Elasticsearch에서 인덱스는 데이터베이스의 테이블과 유사하며 데이터를 저장하고 구성하는 데 사용됩니다.

다음 코드를 사용하여 "products"라는 인덱스를 생성합니다.

setHosts($hosts) ->build(); $params = [ 'index' => 'products' // 索引名称 ]; $response = $client->indices()->create($params); echo "Index created successfully."; ?>
로그인 후 복사

3. 데이터 가져오기

다음으로, 방금 생성한 인덱스로 데이터를 가져와야 합니다. 이 예에서는 일부 제품 정보의 JSON 데이터가 포함된 "products.json"이라는 파일이 있다고 가정합니다.

다음 코드를 사용하여 "products" 인덱스로 데이터를 가져옵니다.

setHosts($hosts) ->build(); $params = [ 'index' => 'products', // 索引名称 'body' => [ // 导入数据的JSON数组 [ 'index' => [ '_index' => 'products', '_type' => 'product', ] ], [ 'title' => 'iPhone 11', 'description' => 'An amazing smartphone by Apple.', 'price' => 999, ], [ 'index' => [ '_index' => 'products', '_type' => 'product', ] ], [ 'title' => 'Samsung Galaxy S20', 'description' => 'A powerful smartphone by Samsung.', 'price' => 899, ], // 更多商品数据... ] ]; $response = $client->bulk($params); echo "Data imported successfully."; ?>
로그인 후 복사

IV. 검색 기능 실행

이제 인덱스를 생성하고 데이터를 가져왔으므로 검색 기능을 구현할 수 있습니다. PHP에서는 Elasticsearch의 검색 API를 사용하여 검색 쿼리를 수행할 수 있습니다.

다음 코드를 사용하여 검색 기능을 구현합니다.

setHosts($hosts) ->build(); $params = [ 'index' => 'products', // 索引名称 'body' => [ 'query' => [ 'match' => [ 'title' => 'iPhone' // 搜索关键字 ] ] ] ]; $response = $client->search($params); // 处理搜索结果 foreach ($response['hits']['hits'] as $hit) { echo $hit['_source']['title'] . "
"; echo $hit['_source']['description'] . "
"; echo $hit['_source']['price'] . "
"; echo "
"; } ?>
로그인 후 복사

위 코드는 Elasticsearch의 "일치" 쿼리를 사용하여 검색을 수행하고 검색 결과를 탐색하여 표시합니다.

5. 결과 페이징 및 탐색 구현

일반적으로 검색 결과의 수가 많을 수 있으므로 더 나은 사용자 경험을 제공하기 위해서는 결과 페이징 및 탐색 기능을 구현해야 합니다. PHP에서는 Elasticsearch의 "from" 및 "size" 매개변수를 사용하여 페이징을 구현할 수 있습니다.

다음 코드를 사용하여 페이징 및 탐색 기능을 구현합니다.

setHosts($hosts) ->build(); $page = isset($_GET['page']) ? intval($_GET['page']) : 1; // 当前页数 $perPage = 10; // 每页显示的数量 $from = ($page - 1) * $perPage; $params = [ 'index' => 'products', // 索引名称 'body' => [ 'from' => $from, // 从第几个结果开始 'size' => $perPage // 每页显示的数量 'query' => [ 'match' => [ 'title' => 'iPhone' // 搜索关键字 ] ] ] ]; $response = $client->search($params); // 处理搜索结果 foreach ($response['hits']['hits'] as $hit) { echo $hit['_source']['title'] . "
"; echo $hit['_source']['description'] . "
"; echo $hit['_source']['price'] . "
"; echo "
"; } // 显示分页导航 $totalPages = ceil($response['hits']['total']['value'] / $perPage); // 总页数 for ($i = 1; $i <= $totalPages; $i++) { echo "$i"; } ?>
로그인 후 복사

위 코드는 사용자의 요청 매개변수를 기반으로 현재 페이지 번호를 결정하고 "from" 및 "size" 매개변수를 사용하여 결과 범위를 제어합니다. 동시에 페이지가 매겨진 탐색은 전체 검색 결과 수와 각 페이지에 표시된 수를 기반으로 계산되어 표시됩니다.

요약

이 글에서는 PHP와 Elasticsearch를 사용하여 검색 결과 표시 및 탐색 기능을 구현하는 방법을 소개합니다. 개발 환경 설정, 인덱스 생성, 데이터 가져오기, 검색 기능 실행을 통해 효율적인 검색 경험을 얻을 수 있으며 페이지 매김 탐색을 통해 더 나은 사용자 경험을 제공할 수 있습니다. 나는 독자들이 이 기사의 샘플 코드를 기반으로 자신의 프로젝트에 이를 쉽게 적용할 수 있다고 믿습니다.

위 내용은 PHP와 Elasticsearch를 사용하여 검색 결과를 표시하고 탐색하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!