Latest web development tutorials

MongoDB의 전체 텍스트 검색

단어의 개수와 위치를 나타내는 각각의 워드에 대한 전체 텍스트 검색 인덱스의 설정은 사용자의 쿼리가 검색 프로그램 인덱스를 찾기 위해 사전에 설정하고, 검색 사용자의 검색 방법에 다시 발생 될 문서에 나타난다.

이 프로세스는 테이블 단어 사전 검색 처리에 의해 검색 단어와 유사하다.

전체 텍스트 검색을 지원하기 위해 처음부터 MongoDB를 버전 2.4은 현재 15 개 언어 (일시적으로 중국어를 지원하지 않습니다) 전체 텍스트 인덱스를 지원합니다.

  • 덴마크의
  • 네덜란드어
  • 영어
  • 핀란드의
  • 프랑스의
  • 독일의
  • 헝가리의
  • 이탈리아의
  • 노르웨이의
  • 포르투갈어
  • 루마니아어
  • 러시아어
  • 스페인어
  • 스웨덴어
  • 터키의

전체 텍스트 검색을 사용하도록 설정

MongoDB를 버전 2.6은 기본적으로 전체 텍스트 검색으로 설정 한 후 이전 버전을 사용하는 경우, 당신은 전체 텍스트 검색을 사용하려면 다음 코드를 사용합니다 :

>db.adminCommand({setParameter:true,textSearchEnabled:true})

또는 명령을 사용합니다 :

mongod --setParameter textSearchEnabled=true

전체 텍스트 인덱스 만들기

문서 (POST_TEXT) 및 라벨 (태그)의 내용을 포함하는 다음 포스트 문서 데이터 세트를 고려

{
   "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")