PHP 및 Elasticsearch를 사용하여 전체 텍스트 검색 엔진을 구축하는 방법
전체 텍스트 검색 엔진은 현대 인터넷에서 중요한 역할을 하며 사용자는 자신의 필요에 맞는 정보를 빠르게 찾을 수 있습니다. 좋은 전체 텍스트 검색 엔진은 검색 속도가 빨라야 할 뿐만 아니라 고품질 검색 결과도 제공해야 합니다. 이 기사에서는 PHP와 Elasticsearch를 사용하여 전체 텍스트 검색 엔진을 구축하는 방법을 설명합니다.
Elasticsearch란 무엇인가요?
Elasticsearch는 Lucene 검색 엔진 라이브러리를 기반으로 하는 오픈 소스 검색 엔진입니다. 분산된 다중 테넌트 전체 텍스트 검색 엔진을 제공하며 대규모 데이터를 자동으로 처리할 수 있습니다. Elasticsearch는 데이터를 빠르게 검색하고 분석할 수 있으며 실시간 검색을 지원합니다. 즉, 데이터가 업데이트되면 Elasticsearch가 밀리초 이내에 새로운 데이터의 검색 결과를 반환할 수 있습니다.
Elasticsearch는 텍스트, 숫자 값, 날짜, 지리적 위치 등을 포함한 다양한 데이터 유형을 지원합니다. Elasticsearch를 사용하면 전체 텍스트 검색 엔진을 신속하게 구축하고 다양한 요구 사항에 따라 사용자 정의할 수 있습니다.
PHP를 사용하여 Elasticsearch에 연결
PHP를 사용하여 Elasticsearch에 연결하려면 Elasticsearch PHP 클라이언트 라이브러리를 설치해야 합니다. 이 라이브러리를 설치하는 가장 쉬운 방법은 다음 명령으로 설치할 수 있는 Composer를 사용하는 것입니다.
composer require elasticsearch/elasticsearch
설치가 완료된 후 코드에서 이 라이브러리를 참조하십시오.
require 'vendor/autoload.php'; use ElasticsearchClientBuilder;
여기에서는 Elasticsearch PHP의 ClientBuilder 클래스를 사용합니다. Elasticsearch에 연결하기 위한 클라이언트 라이브러리입니다.
$config = [
'hosts' => ['localhost:9200']
];
$client = ClientBuilder::create()->setHosts($config['hosts'])->build();
여기에서는 ClientBuilder 클래스를 사용합니다. Elasticsearch 클라이언트를 생성하고 클러스터의 호스트 이름과 포트를 사용하여 연결합니다.
Create Index
전체 텍스트 검색 엔진에서는 데이터가 데이터베이스가 아닌 인덱스에 저장되어야 합니다. 인덱스를 생성하려면 먼저 데이터 구조와 인덱스 설정을 정의해야 합니다. 이 구조를 매핑이라고 합니다.
이 예에서는 기사를 검색하는 검색 엔진을 만들고 싶다고 가정해 보겠습니다. 기사에는 제목, 작성자, 발행일, 텍스트 등의 필드가 있습니다. 다음 코드를 사용하여 매핑을 정의할 수 있습니다.
$params = [
'index' => 'articles', 'body' => [ 'mappings' => [ 'article' => [ 'properties' => [ 'title' => ['type' => 'text'], 'author' => ['type' => 'text'], 'publish_date' => ['type' => 'date'], 'body' => ['type' => 'text'] ] ] ] ]
];
$response = $client->indices()->create($params);
여기서 인덱스 이름을 정의합니다. 이는 "기사"이며 기사의 제목, 작성자, 출판 날짜 및 텍스트를 포함하여 기사의 매핑을 정의합니다. 그러면 우리가 정의한 필드가 포함된 "article"이라는 유형을 포함하는 "articles"라는 인덱스가 생성됩니다.
인덱스를 생성한 후 인덱스에 데이터 추가를 시작할 수 있습니다.
데이터 추가
데이터를 추가하려면 index
메서드를 호출하여 Elasticsearch에 데이터를 씁니다.
$params = [
'index' => 'articles', 'type' => 'article', 'id' => 1, 'body' => [ 'title' => '如何使用PHP和Elasticsearch构建全文搜索引擎', 'author' => 'John Doe', 'publish_date' => '2020-01-01', 'body' => '全文搜索引擎在现代互联网中扮演着重要的角色……' ]
];
$client->index($params);
여기서는 고유 ID를 사용하여 "기사" 색인과 색인을 생성할 "기사" 유형을 지정합니다. 데이터를 인덱싱할 때 우리는 데이터를 Elasticsearch에 기록하고 인덱싱하여 검색 가능하게 만듭니다.
Querying data
데이터를 쿼리하려면 쿼리 요청을 구성하여 Elasticsearch 서버로 보내야 합니다. 필드의 키워드와 일치하는 일치 쿼리를 사용할 수 있습니다. 예:
$query = [
'match' => [ 'title' => 'Elasticsearch' ]
];
$params = [
'index' => 'articles', 'type' => 'article', 'body' => [ 'query' => $query ]
];
$response = $client->search($params);
여기서 모든 "기사"를 쿼리합니다. indexes "기사" 유형 파일에서 문서에는 "제목" 필드가 포함되어 있고 "제목" 필드에는 "Elasticsearch" 키워드가 포함되어 있습니다.
Elasticsearch는 부울 쿼리, 범위 쿼리, 접두사 쿼리 등과 같은 다른 많은 유형의 쿼리도 지원합니다. 모든 쿼리 유형과 이를 사용하는 방법을 이해하면 검색 엔진이 다양한 유형의 데이터에 더 잘 적응할 수 있습니다.
결론
이 기사에서는 PHP와 Elasticsearch를 사용하여 전체 텍스트 검색 엔진을 구축하는 방법을 배웠습니다. 먼저 Elasticsearch PHP 클라이언트 라이브러리를 설치하고 이를 사용하여 Elasticsearch 서버에 연결했습니다. 그런 다음 "기사"라는 색인을 생성하고 기사 매핑을 정의합니다. 그런 다음 일부 데이터를 추가하고 쿼리를 실행했습니다. 마지막으로, Elasticsearch가 다양한 쿼리 유형을 지원한다는 사실과 이를 사용하는 방법을 배워 다양한 데이터 유형에 적합한 더욱 강력한 전체 텍스트 검색 엔진을 구축할 수 있었습니다.
위 내용은 PHP와 Elasticsearch를 사용하여 전체 텍스트 검색 엔진을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!