Atlas Search
개요
이 가이드에서는 Atlas Search 기능을 사용하여 문서를 검색하는 방법을 알아볼 수 있습니다. PHP 라이브러리를 사용하면 집계 빌더를 사용하여 Atlas Search 쿼리를 수행할 수 있습니다.
참고
배포 호환성
Atlas Search 기능 MongoDB Atlas 클러스터에 연결한 경우에만 사용할 수 있습니다. 이 기능 자체 관리형 배포서버에는 사용할 수 없습니다.
Atlas Search에 대한 자세한 내용은 Atlas Search 개요를 참조하세요. PHP 라이브러리의 Atlas Search 구현은 내부적으로 $search
집계 연산자를 사용하여 쿼리를 수행합니다. 이 연산자에 대한 자세한 내용은 Atlas 문서의 $search 참조를 확인하세요.
참고
Atlas Vector Search
MongoDB 에서 벡터 임베딩에 대한 검색을 수행하려면 Atlas Vector Search API 사용할 수 있습니다. 이 기능 에 대해 학습 Atlas Vector Search 가이드 참조하세요.
Atlas Search 인덱스
Atlas Search 쿼리를 수행하려면 먼저 컬렉션 에 Atlas Search 인덱스 만들어야 합니다. 이 인덱스 유형을 만드는 방법에 대해 자세히 학습 Atlas Search 인덱스 가이드 참조하세요.
검색 애그리게이션 단계
애그리게이션 빌더를 사용하여 Atlas Search 쿼리를 수행하려면 다음 클래스를 애플리케이션 으로 가져옵니다.
use MongoDB\Builder\Pipeline; use MongoDB\Builder\Search; use MongoDB\Builder\Stage;
집계 파이프라인 에서 $search
단계를 만들려면 다음 작업을 수행합니다.
파이프라인 단계를 저장
Pipeline
인스턴스 를 만듭니다.Stage::search()
메서드를 호출하여 Atlas Search 단계를 만듭니다.search()
메서드의 본문에서Search
빌더 클래스의 메서드를 사용하여 검색 쿼리 기준을 구성합니다.
다음 코드는 기본 Atlas Search 쿼리를 구성하기 위한 템플릿을 보여줍니다.
$pipeline = new Pipeline( Stage::search( /* Atlas Search query specifications Search::compound(...) */ ), );
Atlas Search 쿼리 예시
이 섹션에서는 집계 빌더를 사용하여 다양한 유형의 Atlas Search 쿼리를 수행하는 방법을 알아봅니다. 이 섹션의 예시에서는 sample_restaurants.restaurants
컬렉션의 샘플 데이터를 사용합니다.
필터가 있는 복합 쿼리
두 개 이상의 연산자를 단일 쿼리로 결합하려면 Search::compound()
메서드를 사용합니다. 이 메서드는 must
및 filter
와 같은 절에 대해 명명된 인수를 사용합니다. 각 절에서 Search::text()
메서드를 사용해 전체 텍스트 검색을 수행할 때 찾을 문자열을 지정합니다.
이 예시는 다음 사양을 가진 Atlas Search 쿼리를 수행합니다.
name
필드 에서"kitchen"
문자열을 검색must
절을 포함합니다.cuisine
필드에"american"
가 포함된 문서를 높은 순위로 평가하기 위한should
절을 포함합니다borough
값이"Queens"
인 문서만 결과에 포함하는filter
필드 포함합니다.
$pipeline = new Pipeline( Stage::search( Search::compound( must: [ Search::text( query: 'kitchen', path: 'name', ), ], should: [ Search::text( query: 'american', path: 'cuisine', ), ], filter: [ Search::text( query: 'Queens', path: 'borough', ), ], ), ), Stage::project( borough: 1, cuisine: 1, name: 1 ), Stage::limit(3) ); $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"_id":...,"borough":"Queens","cuisine":"American","name":"Kitchen Door"} {"_id":...,"borough":"Queens","cuisine":"American","name":"Cc Kitchen"} {"_id":...,"borough":"Queens","cuisine":"American","name":"Suite Kitchen"} // Results truncated
자동 완성 쿼리
PHP 라이브러리는 컬렉션의 문서에서 자동 완성 검색을 실행하는 Search::autocomplete()
메서드를 제공합니다.
이 유형의 Atlas Search 쿼리에 대해 더 알아보려면 Atlas 문서의 자동 완성 참조를 확인하세요.
참고
Atlas Search 인덱스가 자동 완성 쿼리를 위해 구성되어야 합니다. 자세한 내용은 Atlas 문서에서 자동 완성을 위한 필드 인덱싱 방법 을 참조하세요.
다음 코드는 name
필드에서 문자열 "Lucy"
에 대한 Atlas Search 자동 완성 쿼리를 수행합니다.
$pipeline = new Pipeline( Stage::search( Search::autocomplete( query: 'Lucy', path: 'name', ), ), Stage::limit(3), Stage::project(_id: 0, name: 1), ); $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"name":"Juicy Lucy"} {"name":"Lucy'S Vietnamese Kitchen"} {"name":"Lucy'S Cantina Royale"} // Results Truncated
다음 선택 사항 매개변수를 autocomplete()
메서드에 전달하여 쿼리를 사용자 지정할 수도 있습니다.
선택적 매개변수 | 설명 | 기본값 |
---|---|---|
| 퍼지 검색 및 퍼지 검색 옵션을 활성화합니다. |
|
| 토큰을 검색할 순서를 지정합니다 |
|
이러한 매개변수에 대한 자세한 내용은 Atlas 문서의 autocomplete
연산자 참조의 옵션 섹션을 참조하세요.
검색 옵션
search()
메서드를 사용하여 다양한 유형의 Atlas Search 쿼리를 수행할 수 있습니다. 원하는 쿼리에 따라 다음의 선택 사항 매개변수를 search()
에 전달할 수 있습니다.
선택적 매개변수 | 유형 | 설명 |
---|---|---|
|
| 사용하려는 Atlas Search 인덱스의 이름 제공 |
|
| 검색어를 원래 문맥에 맞게 표시하기 위한 하이라이트 옵션 지정 |
|
| 전용 검색 노드에서 여러 세그먼트에 걸쳐 검색 쿼리 병렬화 |
|
| 결과의 개수를 검색하기 위한 수량 옵션 지정 |
|
| 문서를 반환하기 위해 해당 지점 바로 다음부터 시작하는 참조점 지정 |
|
| 문서를 반환하기 위해 해당 지점 바로 이전부터 시작하는 참조점 지정 |
|
| 결과에 대한 점수의 자세한 분석을 조회할지 여부 지정 |
|
| 결과를 정렬할 필드 지정 |
|
| 백엔드 데이터베이스에서 전체 문서 조회 수행 또는 Atlas Search에 저장된 소스 필드만 직접 반환 중에서 지정 |
|
| 검색어에 대한 분석 정보를 조회하기 위한 추적 옵션 지정 |
이러한 매개변수에 대해 자세히 $search
학습 Atlas 문서에서 연산자 참조의 필드 섹션을 참조하세요.