텍스트 검색
MongoDB 는 string 콘텐츠에 대한 텍스트 Atlas Search 쿼리를 지원하기 위해 텍스트 인덱스 를 제공합니다. 텍스트 인덱스에는 값이 string 또는 string 요소의 배열인 모든 필드가 포함될 수 있습니다.
참고
MongoDB Atlas 는 더욱 강력하고 유연한 텍스트 Atlas Search 솔루션인 Atlas Search Search도 제공합니다. 이 섹션의 나머지 부분에서는 Atlas Search가 아닌 텍스트 인덱스에 대해 설명합니다.
Mongoid로 텍스트 검색을 수행하려면 다음 단계를 따르세요.
모델에서 텍스트 인덱스를 정의합니다.
서버에 텍스트 인덱스를 생성합니다.
텍스트 검색 쿼리 를 작성합니다.
텍스트 검색 인덱스 정의
Mongoid를 통한 인덱스 정의는 인덱스 페이지에 자세히 설명되어 있습니다. 텍스트 검색 인덱스는 MongoDB 매뉴얼의 텍스트 인덱스 아래에 자세히 설명되어 있습니다. 다음은 설명 필드 를 활용하는 텍스트 인덱스 가 있는 밴드 모델의 정의 예시 입니다.
class Band include Mongoid::Document field :name, type: String field :description, type: String index description: 'text' end
인덱스 유형(text
)은 기호가 아닌 string 로 지정해야 합니다.
텍스트 인덱스 만들기
인덱스를 만들려면 db:mongoid:create_indexes
Rake 작업을 호출합니다.
bundle exec rake db:mongoid:create_indexes
텍스트 인덱스를 사용하여 쿼리하기
설명에 '온스' 또는 그 변형이 포함된 밴드를 찾으려면 $text 연산자 를 사용합니다.
Band.where('$text' => {'$search' => 'ounces'}).to_a # => [#<Band _id: 5d5341b3ce4ef35d5016746d, name: "foo", description: "ounce">]
검색 쿼리 가 '온스'인 경우에도 설명에 '온스'라는 단어가 포함되어 있습니다.
또한 텍스트 검색을 수행할 때 필드 이름이 명시적으로 지정되지 않는다는 점에 유의합니다. $text
연산자는 텍스트 인덱스로 인덱싱된 모든 필드를 검색합니다.