텍스트 검색
MongoDB 는 문서의 string 콘텐츠에 대한 텍스트 검색 을 수행하는 쿼리 작업을 지원합니다. 텍스트 검색 을 수행하기 위해 MongoDB 는 텍스트 인덱스 와 $text
쿼리 연산자 를 사용합니다. 텍스트 검색에 학습 보려면 서버 매뉴얼의 텍스트 검색 을 참조하세요.
운전자 는 텍스트 검색 쿼리 필터를 쉽게 만들 수 있도록 Filters.text()
헬퍼 메서드를 제공합니다.
전제 조건
이 가이드의 코드 예제를 실행하려면 다음 구성 요소를 설정해야 합니다.
A
test.restaurants
컬렉션 populated with documents from therestaurants.json
파일 in the documentation assets Github.다음 가져오기 문:
import com.mongodb.client.MongoClients; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Indexes; import com.mongodb.client.model.Filters; import com.mongodb.client.model.Sorts; import com.mongodb.client.model.TextSearchOptions; import com.mongodb.client.model.Projections; import org.bson.Document;
중요
이 가이드 에서는 샘플 사용자 지정 구독자 구현 가이드 에 설명된 사용자 지정 Subscriber
구현을 사용합니다.
MongoDB 배포에 연결하기
먼저 MongoDB 배포서버에 연결하고 MongoDatabase
및 MongoCollection
인스턴스를 선언 및 정의합니다.
다음 코드는 포트 27017
의 localhost
에서 실행되는 독립형 MongoDB 배포서버에 연결합니다. 그런 다음 test
데이터베이스를 참조하는 database
변수와 restaurants
컬렉션을 참조하는 collection
변수를 정의합니다.
MongoClient mongoClient = MongoClients.create(); MongoDatabase database = mongoClient.getDatabase("test"); MongoCollection<Document> collection = database.getCollection("restaurants");
MongoDB deployment에 연결하는 방법에 대해 자세히 알아보려면 MongoDB에 연결 튜토리얼을 참조하세요.
텍스트 인덱스 만들기
텍스트 인덱스를 만들려면 Indexes.text()
정적 헬퍼를 사용하여 텍스트 인덱스에 대한 사양을 만들고 사양을 MongoCollection.createIndex()
메서드에 전달하여 인덱스를 만듭니다.
다음 예시 에서는 restaurants
컬렉션 의 name
필드 에 텍스트 인덱스 를 만듭니다.
MongoCollection<Document> collection = database.getCollection("restaurants"); collection.createIndex(Indexes.text("name")).subscribe(new PrintToStringSubscriber<String>());
텍스트 Atlas 검색 수행
텍스트 Atlas Search를 수행하려면 Filters.text()
헬퍼 메서드를 사용하여 텍스트 Atlas Search 쿼리 필터를 지정합니다.
예를 예시 , 다음 코드는 name
필드 에서 "bakery"
또는 "coffee"
문자열과 일치하는 텍스트 검색 을 수행합니다.
collection .countDocuments(Filters.text("bakery coffee")) .subscribe(new PrintSubscriber<Long>("Text search matches: %s"));
Text search matches: [2]
텍스트 점수
텍스트 검색 은 일치하는 각 문서 에 대해 지정된 텍스트 검색 쿼리 필터하다 에 대한 문서 의 관련성을 나타내는 점수를 할당합니다. 점수를 기준으로 반환하고 정렬하려면 프로젝션 문서 에서 $meta
연산자 와 정렬 표현식 을 사용합니다.
collection.find(Filters.text("bakery cafe")) .projection(Projections.metaTextScore("score")) .sort(Sorts.metaTextScore("score")) .subscribe(new PrintDocumentSubscriber());
텍스트 Atlas Search 옵션 지정
Filters.text()
헬퍼는 다양한 텍스트 Atlas Search 옵션을 허용할 수 있습니다. 드라이버는 이러한 옵션을 지정하기 위해 TextSearchOptions
클래스를 제공합니다.
예를 들어, 다음 텍스트 Atlas Search는 "cafe"
단어에 대해 Atlas Search를 수행할 때 텍스트 Atlas Search 언어 옵션을 지정합니다.
collection.countDocuments( Filters.text("cafe", new TextSearchOptions().language("english")) ).subscribe(new PrintSubscriber<Long>("Text search matches (english): %s"));
Text search matches (english): [1]
텍스트 Atlas Search에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 다음 섹션을 참조하세요.