Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드프레소
- 스프링
- 자바
- 몽고디비
- 위치 기반 쿼리
- Spring Framework
- 조대협
- aws
- Jenkins
- spring boot
- STS
- AWS Developer
- Code Presso
- 대용량 아키텍처와 성능 튜닝
- 스프링 프레임워크
- 스프링 부트
- 읽기 고려
- NoSQL
- Text Index
- mongoDB
- AWS 자격증
- Amazon Web Service
- Java
- java spring framework
- Spring
- Write Concern
- iam
- 쓰기 고려
- JPA
- EC2
Archives
- Today
- Total
개발과 기록의 조화
[MongoDB] 텍스트(TEXT) 인덱스 본문
해당 게시물은 학습 및 기록 목적으로 작성되었습니다. 사실과 다른 내용이 있을 수 있으며, 오류가 있거나 궁금한 점은 댓글이나 dlaudtjr07@gmail.com 으로 메일 주시면 감사하겠습니다.
텍스트 검색
MongoDB는 문자열 내용의 텍스트 검색 수행 쿼리 작업을 지원합니다. 이에 따라 텍스트 검색을 위해 Text Index와 $text 연산자를 이용합니다.
예제 데이터 작성
예제를 하나 만듭시다.
db.shop.insert(
[
{_id : 1, name : "StarBucks" , description : "StarBucks Coffee"},
{_id : 2, name : "CarHartt" , description : "Work In Progress"},
{_id : 3, name : "Converse", description : "Chuck Taylor"}
]
)
MongoDB에서는 텍스트 검색 쿼리를 지원하는 Text Index 기능이 있습니다. 문자열 , 문자열 배열 요소가 이에 적용 가능합니다. 컬렉션은 하나의 텍스트 인덱스만 가질 수 있습니다만, 해당 인덱스는 여러 필드를 포함할 수 있습니다.
텍스트 인덱스를 사용할려면 당연히 등록을 해야겠죠. 등록 해봅시다.
db.shop.createIndex({name : "text", description : "text"})
name 필드와 description 필드에 text 타입으로 인덱스를 생성했습니다. 이는 곧 두 개의 인덱스 필드를 지정한 것과 같습니다.
이제 텍스트 인덱스를 등록했기 때문에 $text 쿼리 연산자를 이용해 텍스트 인덱스로 검색할 수 있습니다.
db.shop.find({$text:{$search : "CarHartt"}})
문자열 검색 시에 조건에 해당하는 문자열 범위 내에 일치하는 데이터를 검색할 수도 있습니다.
db.shop.find({$text:{$search : "\"StarBucks\""}})
$search 연산자로 따옴표로 문자열 검색 조건을 묶으면 대소문자 구별 없이 정확히 일치하는 데이터만 찾아냅니다.
'-' 연산자로 제외할 텀을 지정할 수도 있습니다.
db.shop.find({$text:{$search : "CarHartt -StarBucks"}})
기본적으로 MongoDB는 정렬하지 않는 결과를 반환하는 반면, 텍스트 인덱스는 "검색 정확도"를 기반으로 문서에 대한 점수를 매겨서 스코어 기준으로 정렬하는 특징을 가지고 있습니다.
db.shop.find(
{
$text : {$search:"StarBucks Carhartt"}},
{score:{$meta:"textScore"}}
).sort({score :{$meta : "textScore"}})
해당 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.
'Database > MongoDB' 카테고리의 다른 글
[MongoDB] 쓰기 고려 (Write Concern) (0) | 2020.02.03 |
---|---|
[MongoDB] 읽기 고려 (Read Concern) (0) | 2020.02.03 |
[MongoDB] 위치 기반 쿼리 (0) | 2020.02.03 |
[MongoDB] MongoDB 구조, 기본 CRUD 명령어 (0) | 2020.02.03 |
[MongoDB] MongoDB 개념 및 설치 (0) | 2020.02.03 |
Comments