php Elasticsearch: 중국어 단어 분할 및 다른 언어 검색 요구 사항을 처리하는 방법은 무엇입니까?
Abstract
Elasticsearch는 다양한 유형의 데이터 검색 및 분석 요구에 널리 사용되는 강력한 분산 검색 엔진입니다. 그러나 영어가 아닌 언어, 특히 중국어 검색의 경우 정확성과 신뢰성을 보장하기 위해 특별한 처리가 필요합니다. 이 기사에서는 PHP에서 Elasticsearch를 사용하여 중국어 단어 분할 및 다른 언어의 검색 요구 사항을 처리하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.
소개
중국어 단어 분할은 검색 및 일치를 위해 중국어 텍스트를 검색 가능한 단어로 분할하는 매우 중요한 단계입니다. 중국어의 의미적 복잡성으로 인해 전통적인 영어 단어 분할 알고리즘은 중국어에 잘 적용되지 않습니다. 다행스럽게도 Elasticsearch에는 중국어 단어 분할을 지원하는 플러그인이 내장되어 있어 중국어 검색 요구 사항을 쉽게 처리할 수 있습니다.
1단계: Elasticsearch 설치
먼저 Elasticsearch가 서버에 설치되어 실행되고 있는지 확인해야 합니다. Elasticsearch 공식 홈페이지(https://www.elastic.co/)를 방문해 최신 설치 패키지와 자세한 설치 지침을 받아보실 수 있습니다.
2단계: Elasticsearch-php 클라이언트 설치
PHP에서 Elasticsearch를 사용하려면 Elasticsearch-php 클라이언트를 설치해야 합니다. Composer를 사용하거나 수동으로 다운로드하여 설치할 수 있습니다.
Composer를 사용하여 Elasticsearch-php를 설치하려면 프로젝트의 루트 디렉터리에 작곡가.json 파일을 만들고 다음 종속성을 추가할 수 있습니다.
{
"require": {
"elasticsearch/elasticsearch" : "^7.0"
}
}
그런 다음 다음을 실행하세요. 터미널에서 "composer install"은 종속성을 설치합니다.
수동으로 다운로드하여 설치하려면 Elasticsearch-php의 Github 페이지(https://github.com/elastic/elasticsearch-php)를 방문하여 최신 안정 버전을 다운로드하고 프로젝트의 PHP 경로에 추출하세요.
3단계: Elasticsearch 연결 설정
코드에서 먼저 Elasticsearch에 대한 연결을 설정해야 합니다. 다음 코드를 사용할 수 있습니다:
use ElasticsearchClientBuilder;
$hosts = ['localhost:9200'];
$client = ClientBuilder::create()->setHosts($hosts)->build();
여기서는 기본 localhost:9200 연결 주소가 사용됩니다. 실제 상황에 따라 조정해야 합니다.
4단계: 인덱스 생성
Elasticsearch에서는 데이터가 인덱스에 저장됩니다. 먼저 문서를 저장할 인덱스를 만들어야 합니다. 다음 코드를 사용하여 "my_index"라는 인덱스를 생성할 수 있습니다:
$params = [
'index' => 'my_index', 'body' => [ 'settings' => [ 'analysis' => [ 'analyzer' => [ 'default' => [ 'type' => 'smartcn' ] ] ] ] ]
];
$client->indices()->create($params);
여기서 " smartcn" 단어 분할기는 중국어 단어 분할을 지원하는 단어 분할기입니다. 필요에 따라 다른 토크나이저를 선택할 수도 있습니다.
5단계: 문서 삽입
다음 코드를 사용하여 문서를 인덱스에 삽입할 수 있습니다.
$params = [
'index' => 'my_index', 'body' => [ 'title' => '中国的美食', 'content' => '中国有许多美食,如麻辣火锅、北京烤鸭等。', 'timestamp' => time() ]
];
$client->index($params);
여기서 제목, 내용, 타임스탬프가 포함된 문서를 삽입합니다.
6단계: 문서 검색
인덱스에 데이터가 있으면 검색할 수 있습니다. 다음 코드를 사용하여 검색할 수 있습니다.
$query = [
'index' => 'my_index', 'body' => [ 'query' => [ 'match' => [ 'content' => '火锅' ] ] ]
];
$response = $client->search($query);
print_r($response);
여기에서 검색합니다. "hotpot"에 대한 문서가 포함된 키워드입니다. 검색 결과는 배열 형태로 반환됩니다.
결론
PHP에서 중국어 단어 분할 및 다른 언어의 검색 요구 사항을 처리하는 것은 복잡하지 않습니다. Elasticsearch 및 Elasticsearch-php의 도움으로 완전한 검색 기능을 쉽게 구현할 수 있습니다. 올바른 토크나이저를 설정하고 적절한 검색 쿼리를 구성하면 정확하고 효율적인 검색 결과를 얻을 수 있습니다. 이 기사의 특정 코드 예제가 독자가 중국어 단어 분할 및 다른 언어의 검색 요구 사항을 더 잘 이해하고 적용하는 데 도움이 되기를 바랍니다.
참고자료:
위 내용은 php Elasticsearch: 중국어 단어 분할 및 다른 언어의 검색 요구 사항을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!