개요
이 가이드에서 Scala 드라이버를 사용하여 텍스트 쿼리를 실행하는 방법을 학습할 수 있습니다.
텍스트 쿼리를 사용하여 지정된 필드에 텀 또는 구문이 포함된 문서를 조회할 수 있습니다. 터밀에는 공백 문자가 없는 문자만 포함됩니다. 구문에는 임의 수의 공백 문자로 구분된 터밀이 포함됩니다.
참고
텍스트 쿼리를 수행하려면 검색할 컬렉션 필드에 대한 텍스트 인덱스가 필요합니다. 인덱스 생성 방법은 인덱스를 사용하여 쿼리 최적화 가이드를 참조하세요.
샘플 데이터
이 가이드의 예시에서는 Atlas 샘플 데이터 세트의 sample_mflix 데이터베이스에 있는 movies 컬렉션을 사용합니다. Scala 애플리케이션에서 이 컬렉션에 액세스하려면 Atlas 클러스터에 연결하는 MongoClient를 만들어야 합니다. 그 다음 database 및 collection 변수에 다음 값을 할당합니다.
val database: MongoDatabase = mongoClient.getDatabase("sample_mflix") val collection: MongoCollection[Document] = database.getCollection("movies")
무료 MongoDB Atlas 클러스터 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB 시작하기 가이드 를 참조하세요.
텍스트 인덱스 만들기
텍스트 쿼리를 실행하기 전에 컬렉션에 대한 텍스트 인덱스를 만들어야 합니다. 텍스트 인덱스는 텍스트 검색을 위해 인덱싱할 하나 이상의 string 필드를 지정합니다. 다음 예시는 movies 컬렉션의 title 필드에 대한 텍스트 인덱스를 만들어줍니다.
val observable = collection.createIndex(Indexes.text("title")) Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))
터밍으로 텍스트 쿼리
특정 터버가 포함된 문서를 찾으려면 Filters 클래스의 text() 메서드에 터버를 string으로 전달합니다.
다음 예시에서는 title 필드에 "time" 터미 있는 문서의 수를 계산합니다.
val filterTerm = text("time") collection.countDocuments(filterTerm) .subscribe((count: Long) => println(count))
여러 터멀이 포함된 문서를 찾으려면 검색 string에서 터멀을 공백으로 구분합니다. 다음 예시는 title 필드에 "time" 텀 또는 "machine" 텀이 있는 문서의 수를 세어립니다.
val filterMultiple = text("time machine") collection.countDocuments(filterMultiple) .subscribe((count: Long) => println(count))
문구로 텍스트 쿼리
구문을 포함하는 문서를 찾으려면 검색 string에 있스케이프된 인용부호(\")로 묶습니다.
다음 예시에서는 title 필드에서 "time machine" 구문이 포함된 문서 수를 계산합니다.
val filterPhrase = text("\"time machine\"") collection.countDocuments(filterPhrase) .subscribe((count: Long) => println(count))
제외된 텀 포함인 쿼리 텍스트
특정 터밀이 포함된 문서를 제외하려면 검색 스트링에서 해당 터밀에 하이픈(-)을 접두사로 붙입니다. 쿼리에 적어도 하나의 양수 터밀을 포함해야 합니다.
다음 예시에서는 "time" 터메는 포함하지만 "machine" 터메는 포함하지 않는 문서의 수를 세어봅니다.
val filterExclude = text("time -machine") collection.countDocuments(filterExclude) .subscribe((count: Long) => println(count))
쿼리 텍스트 옵션 지정
TextSearchOptions 객체를 Filters.text()의 두 번째 매개 변수로 전달하여 텍스트 쿼리 동작을 사용자 지정할 수 있습니다. 다음 표에서는 TextSearchOptions 인스턴스에 연결할 수 있는 메서드를 설명합니다.
메서드 | 설명 |
|---|---|
| 텍스트 쿼리의 대소문자 구분 여부를 설정합니다. 기본값은 |
| 텍스트 쿼리가 발음 부호에 대해 대소문자를 구분하는지 여부를 설정합니다. 기본값은 |
| 텍스트 쿼리의 언어를 설정합니다. 기본은 텍스트 인덱스의 |
다음 예시는 title 필드에서 텀 "Time"을 대소문자를 구분하여 검색하여 일치하는 문서의 수를 세어보는 예시입니다.
val options = TextSearchOptions().caseSensitive(true) val filterOptions = text("Time", options) collection.countDocuments(filterOptions) .subscribe((count: Long) => println(count))
추가 정보
텍스트 Atlas Search에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 다음 리소스를 참조하세요.
Scala 드라이버를 사용하여 인덱스를 만드는 방법에 대해 자세히 학습하려면 인덱스로 쿼리 최적화 가이드를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.