簡單翻譯。
原文:http://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo
MongoDB是通過增加一個tags的數組來實現標籤功能(tagging)。
obj = {
name: "Apollo" ,
text: "Some text about Apollo moon landings",
tags: [ "moon" , "apollo" "spaceflight" , ]
}
建立索引:
db.articles.ensureIndex( { tags: 1 } );
搜尋:
//尋找一個articles中標籤為"apollo"的文檔,並輸出這個文檔的name屬性。
> print(db.articles.findOne( { tags: "apollo"} ).name);
Apollo
全文檢索搜尋則是把所有的文本分詞後放到一個keywords數組中,實質和tag功能一樣:
{ title : " this is fun" ,
_keywords : ["this", "is" , "fun"]
}
和專門的全文檢索搜尋引擎比較:
MongoDB只是內建功能可以實現全文檢索搜尋,它並不是一個專門的全文檢索搜尋引擎。
專門的全文檢索搜尋引擎提供以下的功能:
1.分詞
2.排名(rank)查詢(MongoDB可以實現,但需要自已寫代碼)
3.bulk index building
儘管bulk index building可以讓索引很快地建立,但是這並不能達到即時的效果,MongoDB有一大好處,可以即時,傳統的工具很難達到這樣的效果。
實際使用的例子:
The Business Insider web site uses MongoDB for its blog search function in production.
Mark Watson's opinions on Java, Ruby, Lisp, AI, and the Semantic Web - A recipe example in Ruby.
Full text search with MongoDB at Flowdock