관리 메뉴

프론트엔드 정복하기

MongoDB에서 text 검색 & index 설정 본문

Node/Node_Tip & 해결경험

MongoDB에서 text 검색 & index 설정

GROWNFRESH 2020. 10. 5. 20:49

MongoDB의 $text 텍스트 인덱스란?)

특정 string 검색어와 일치하는 필드 내용을 찾는다.

(인덱싱된 필드의 내용에 대해 텍스트 검색을 수행한다.)

 

 

$text  표현문 기본

{ 
  $ text : 
    { 
      $ search :  < string > , 
      $ language :  < string > , 
      $ caseSensitive :  < boolean > , 
      $ diacriticSensitive :  < boolean > 
    } 
}
필드 타입 설명
$search string 검색에 사용하는 문자열
$language string (선택값) 불용어 목록 등을 설정함.
$caseSensitive boolean (선택값) 대소문자 구분을 활성화
- default : false ( 구분 x )
$diacriticSensitive boolean (선택값) 발음부호 구분 활성화
- default : false

 

 

 

docs.mongodb.com/manual/reference/operator/query/text/#text-query-operator-behavior

 

 

 

이때, db.collection에 <index 메소드>로 <text index>를 설정해 주어야

$text 표현문으로 검색할 수 있다!!

 

다음을 보자.

productSchema.index({
    title:'text',
    description:'text'
})

검색했을 때 검색어와, 검색 모델(collection)의 어떤 필드와 매칭시키고 싶은가??

제품의 '제목' 필드에서 찾고 싶은가? '설명' 필드에서 찾고 싶은가?

검색어로 찾고 싶은 필드에 'text'로 indexing 해준다!

 

 

++ 검색 가중치

제목과 설명 중 제목에 더 검색결과의 가중치를 두고 싶다면???

productSchema.index({
    title:'text',
    description:'text'
},{
	weights:{
    	title:10,
        description:5
    }
})

docs.mongodb.com/manual/tutorial/control-results-of-text-search/