MongoDB 전체 텍스트 검색
전체 텍스트 검색은 각 단어에 대한 색인을 생성하여 기사에 있는 단어의 수와 위치를 나타냅니다. 사용자가 쿼리하면 검색 프로그램은 미리 설정된 색인을 기반으로 검색하고 결과를 보여줍니다. 검색 결과는 사용자의 검색 방법으로 피드백됩니다.
이 과정은 사전의 검색어 목록을 통해 단어를 찾는 과정과 유사합니다.
MongoDB는 버전 2.4부터 전체 텍스트 검색을 지원하며, 현재 15개 언어로 전체 텍스트 인덱싱을 지원합니다(중국어는 당분간 지원되지 않습니다).
danish
dutch
english
finnish
french
- @
german
헝가리어
-
italian
norwegian
포르투갈어
romanian
russian
spanish
swedish
turkish
전체 텍스트 검색 활성화
MongoDB는 2.6 버전 이후 기본적으로 전체 텍스트 검색을 활성화합니다. 이전 버전을 사용하는 경우 전체 텍스트 검색을 활성화하려면 다음 코드를 사용해야 합니다. -텍스트 검색:
>db.adminCommand({setParameter:true,textSearchEnabled:true})
또는 명령 사용:
mongod --setParameter textSearchEnabled=true
@
전체 텍스트 색인 만들기
기사를 포함하여 다음 게시물 컬렉션의 문서 데이터를 고려합니다. 콘텐츠(post_text) 및 태그(tags):
{ "post_text": "enjoy the mongodb articles on w3cschool.cc", "tags": [ "mongodb", "w3cschool" ] }
글 내 콘텐츠를 검색할 수 있도록 post_text 필드에 전체 텍스트 색인을 생성할 수 있습니다:
>db.posts.ensureIndex({post_text:"text"})
전체 텍스트 색인
사용 이제 post_text 필드에 전체 텍스트 색인이 생성되었습니다. 전체 텍스트 색인, 기사에서 w3cschool.cc 키워드를 검색할 수 있습니다:
>db.posts.find({$text:{$search:"w3cschool.cc"}})
다음 명령은 w3cschool.cc 키워드가 포함된 다음 문서 데이터를 반환합니다.
{ "_id" : ObjectId("53493d14d852429c10000002"), "post_text" : "enjoy the mongodb articles on w3cschool.cc", "tags" : [ "mongodb", "w3cschool" ] } { "_id" : ObjectId("53493d1fd852429c10000003"), "post_text" : "writing tutorials on w3cschool.cc", "tags" : [ "mongodb", "tutorial" ] }
이전 버전의 MongoDB를 사용하는 경우 다음 명령을 사용할 수 있습니다.
>db.posts.runCommand("text",{search:" w3cschool.cc"})
전체 텍스트 인덱스 사용 검색 효율성을 높일 수 있습니다.
전체 텍스트 색인 삭제
기존 전체 텍스트 색인 삭제 find 명령을 사용하여 색인 이름을 찾을 수 있습니다.
>db.posts.getIndexes()
가져오기 위 명령을 통해 인덱스 이름을 지정합니다. 이 예에서 인덱스 이름은 post_text_text입니다. 인덱스를 삭제하려면
>db.posts.dropIndex("post_text_text")