Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

MongoDB 검색 인덱스

이 가이드에서는 PHP 라이브러리를 사용하여 MongoDB 검색 인덱스 및 MongoDB Vector 검색 인덱스를 프로그래밍 방식으로 관리하는 방법을 학습할 수 있습니다.

MongoDB Search 기능 사용하면 MongoDB Atlas 에서 호스팅되는 컬렉션에서 전체 텍스트 검색을 수행할 수 있습니다. MongoDB Search에 대해 자세히 학습하려면 MongoDB Search 개요를 참조하세요.

MongoDB Vector Search를 사용하면 MongoDB Atlas 에 저장된 벡터 임베딩에 대해 시맨틱 검색을 수행할 수 있습니다. MongoDB Vector Search에 대해 자세히 학습하려면 MongoDB Vector Search 개요를 참조하세요.

MongoDB\Collection 인스턴스에서 다음 메서드를 사용하여 MongoDB 검색 및 MongoDB Vector 검색 인덱스를 관리할 수 있습니다.

  • MongoDB\Collection::createSearchIndex()

  • MongoDB\Collection::createSearchIndexes()

  • MongoDB\Collection::listSearchIndexes()

  • MongoDB\Collection::updateSearchIndex()

  • MongoDB\Collection::dropSearchIndex()

참고

MongoDB 검색하다 및 MongoDB 벡터 검색 인덱스 관리는 비동기식입니다.

MongoDB PHP 라이브러리는 MongoDB 검색 인덱스 및 MongoDB 벡터 검색 인덱스를 비동기적으로 관리합니다. 다음 섹션에서 설명하는 라이브러리 메서드는 서버 응답을 즉시 반환하지만 검색 인덱스에 대한 변경 사항은 배경 에서 발생하며 잠시 후까지 완료되지 않을 수 있습니다.

다음 섹션에서는 코드 예시를 제공하여 이전의 각 메서드를 사용하는 방법을 보여줍니다.

createSearchIndex() 메서드를 사용하여 컬렉션에 단일 MongoDB 검색 또는 MongoDB 벡터 검색 인덱스를 생성하거나 createSearchIndexes() 메서드를 사용하여 여러 인덱스를 동시에 생성할 수 있습니다.

다음 코드 예시 단일 MongoDB Search 인덱스 생성하는 방법을 보여줍니다.

$searchIndexName = $collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => 'mySearchIdx'],
);

다음 코드 예시 단일 MongoDB Vector Search 인덱스 생성하는 방법을 보여줍니다.

$vectorSearchIndexName = $collection->createSearchIndex(
[
'fields' => [[
'type' => 'vector',
'path' => 'plot_embedding',
'numDimensions' => 1536,
'similarity' => 'dotProduct',
]],
],
['name' => 'myVSidx', 'type' => 'vectorSearch'],
);

다음 코드 예시는 한 번의 호출로 MongoDB 검색하다 및 벡터 검색하다 검색 인덱스를 생성하는 방법을 보여줍니다.

$indexNames = $collection->createSearchIndexes(
[
[
'name' => 'SearchIdx',
'definition' => ['mappings' => ['dynamic' => true]],
],
[
'name' => 'VSidx',
'type' => 'vectorSearch',
'definition' => [
'fields' => [[
'type' => 'vector',
'path' => 'plot_embedding',
'numDimensions' => 1536,
'similarity' => 'dotProduct',
]],
],
],
],
);

MongoDB Search 또는 MongoDB Vector Search 검색 인덱스를 생성한 후 문서에서 해당 쿼리 유형을 수행할 수 있습니다. 자세히 학습 다음 가이드를 참조하세요.

  • MongoDB Search 쿼리 가이드 실행하기

  • MongoDB Vector Search 쿼리 실행 가이드

버전 2.2부터 사용 중인 MongoDB Server 버전이 MongoDB Search 인덱스를 지원 하지 않는 경우 PHP 라이브러리에서 MongoDB\Exception\SearchNotSupportedException 오류가 발생합니다. MongoDB Server 버전 비호환성 오류를 프로세스 하려면 애플리케이션 에 오류 처리 로직을 추가하세요.

다음 예시 호환되지 않는 MongoDB Server 버전으로 인해 인덱스 생성이 성공하지 못한 경우 createSearchIndex() 메서드를 호출하고 오류 메시지를 출력합니다.

try {
$collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => 'testSearchIdx'],
);
} catch (SearchNotSupportedException $exception) {
echo $exception->getMessage() . "\n";
}

서버 호환성

검색 기능에 필요한 MongoDB Server 버전에 대해 학습하려면 Atlas 문서에서 MongoDB Search 호환성 및 제한 사항 을 참조하세요.

listSearchIndexes() 메서드를 사용하여 컬렉션 에서 MongoDB Search 및 MongoDB Vector Search 인덱스의 배열 반환할 수 있습니다.

foreach ($collection->listSearchIndexes() as $indexInfo) {
echo json_encode($indexInfo), PHP_EOL;
}

updateSearchIndex() 메서드를 사용하여 MongoDB Search 또는 MongoDB 벡터 검색 인덱스 업데이트 할 수 있습니다. 이 메서드를 사용하여 기존 인덱스 의 이름이나 구성을 변경할 수 있습니다.

다음 코드는 title 필드에서 간단한 분석기를 사용하도록 검색 인덱스를 업데이트하는 방법을 보여줍니다.

$collection->updateSearchIndex(
'mySearchIdx',
['mappings' => [
'dynamic' => false,
'fields' => [
'title' => [
'type' => 'string',
'analyzer' => 'lucene.simple',
],
],
]],
);

dropSearchIndex() 메서드를 사용하여 컬렉션 에서 MongoDB Search 또는 MongoDB Vector Search 인덱스 제거 할 수 있습니다.

다음 코드는 mySearchIdx이라는 이름의 MongoDB 검색 인덱스 삭제 방법을 보여줍니다.

$collection->dropSearchIndex('mySearchIdx');

인덱스를 관리하는 방법을 보여주는 실행 가능한 예시는 쿼리 최적화를 위한 인덱스를 참조하세요.

MongoDB Search 기능 사용 방법을 설명하는 튜토리얼을 보려면 Atlas 설명서에서 MongoDB Search 시작하기 를 참조하세요.

이 가이드에서 설명하는 메서드에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

Multikey Indexes

이 페이지의 내용