MongoDB 中文的全文索引


MongoDB 從3.2 版本以后添加了對中文索引的支持:
官網鏈接:https://docs.mongodb.com/manual/reference/text-search-languages/
下面就舉例來看一下MongoDB 的中文索引是怎么樣的?
創建一個集合textIndexTest:
插入下面四條數據:
 
db.textIndexTest.insert({author:"杜甫",title:"絕句",article:"兩個黃鸝鳴翠柳,   一行白鷺上青天。窗含西嶺千秋雪,門泊東吳萬里船。"})1
 
db.textIndexTest.insert({author:"李白",title:"靜夜思",article:"床前明月光,疑是地上霜。 舉頭望明月,低頭思故鄉。"})1
 
db.textIndexTest.insert({author:"張 王",title:"你好",article:"測試數據"})1
 
db.textIndexTest.insert({author:"李賀",title:"李憑箜篌引",article:"吳絲蜀桐張高秋,空山凝雲頹不流。 江娥啼竹素女愁,李憑中國彈箜篌。 昆山玉碎鳳凰叫,芙蓉泣露香蘭笑。 十二門前融冷光,二十三絲動紫皇。 女媧煉石補天處,石破天驚逗秋雨。 夢入神山教神嫗,老魚跳波瘦蛟舞。 吳質不眠倚桂樹,露腳斜飛濕寒兔。"})```1
對textIndexTest 的作者創建索引:
 
db.textIndexTest.createIndex( { author: "text", description: "text" } )1
注釋:
db.collection.ensureIndex(keys, options) 這個語句在3.0被廢棄掉, db.collection.ensureIndex() 現在是db.collection.createIndex()的一個別名
都是創建一個索引 如果索引不存在。
查看一下索引
 
db.textIndexTest.getIndexes()1
接下來用索引搜索:
搜索李白的db.textIndexTest.find({text:{text:{search:”李白”}}) 果:
{ “_id” : ObjectId(“5ae13997ae983fb3f92c9f5b”), “author” : “李白”, “title” : “靜夜思”, “article” : “床前明月光,疑是地上霜。 舉頭望明月,低頭思故鄉。” }
單搜李白的“李”字
 
db.textIndexTest.find({$text:{$search:"李"}}) 1
運行無結果。
單搜一個“王”字
 
db.textIndexTest.find({$text:{$search:"王"}}) 1
出來了:
{ “_id” : ObjectId(“5ae14037ae983fb3f92c9f5d”), “author” : “張 王”, “title” : “你好”, “article” : “測試數據” }
不難看出:
MongoDB中文全文索引建立方式與英文的簡歷幾乎相同 是根據詞(英文單詞)的方式建立的。
如果一個值里面有多個值 則需要按空格方式隔開,”張 王” 系統則認為是兩個詞。
感覺MongodB的中文全文索引沒有想象中的強大。想要實現中文模糊搜素
可以用elasticsearch或者Sphinx,或者lucene

原文鏈接:https://blog.csdn.net/a41888313/article/details/80091935


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM