2014-07-06 2 views
7

는 내가 텍스트 인덱스를 만들 필요가 그렇게하기 위해 컬렉션 전체 텍스트 검색을하려고하지만, 야는 (http://docs.mongodb.org/manual/tutorial/create-text-index-on-multiple-fields/)golang 및 mgo 라이브러리를 사용하여 mongodb에서 텍스트 인덱스를 만드는 방법은 무엇입니까?

은 산화 마그네슘 라이브러리는 단지 한 조각을 받아, 그러나 EnsureIndex() 기능을 제공합니다 문자열을 키로 사용합니다. 문자열로 색인을 작성하려고 시도 : { name: "text", about: "text" } 및 그 함수에 전달하지만 작동하지 않았다.

나는 수동으로 mongo 셸에서 색인을 생성 할 수 있었지만 색인을 내 이동 프로젝트에 문서화하고 싶습니다. 이것이 가능한가? 미리 감사드립니다!

답변

10

드라이버에서 지원됩니다. $text:field처럼 "텍스트"로 색인을 생성 할 필드를 정의하기 만하면됩니다. 전체 목록에서

다음 몽고 쉘에서 볼

import (
    "labix.org/v2/mgo" 
) 

func main() { 

    session, err := mgo.Dial("127.0.0.1") 
    if err != nil { 
    panic(err) 
    } 

    defer session.Close() 

    session.SetMode(mgo.Monotonic, true) 

    c := session.DB("test").C("texty") 

    index := mgo.Index{ 
    Key: []string{"$text:name", "$text:about"}, 
    } 

    err = c.EnsureIndex(index) 
    if err != nil { 
    panic(err) 
    } 

} 

을 줄 것이다 :

> db.texty.getIndices() 
[ 
    { 
      "v" : 1, 
      "key" : { 
        "_id" : 1 
      }, 
      "name" : "_id_", 
      "ns" : "test.texty" 
    }, 
    { 
      "v" : 1, 
      "key" : { 
        "_fts" : "text", 
        "_ftsx" : 1 
      }, 
      "name" : "name_text_about_text", 
      "ns" : "test.texty", 
      "weights" : { 
        "about" : 1, 
        "name" : 1 
      }, 
      "default_language" : "english", 
      "language_override" : "language", 
      "textIndexVersion" : 2 
    } 
] 
관련 문제