時(shí)間:2024-03-26 14:40作者:下載吧人氣:31
前言
眾所周知在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)中,我們通常將數(shù)據(jù)結(jié)構(gòu)化,通過(guò)一系列表關(guān)聯(lián)、聚合來(lái)查詢(xún)我們所需的結(jié)果。而在非結(jié)構(gòu)化的數(shù)據(jù)中,缺少這種預(yù)定義的結(jié)構(gòu),因而如何快速查詢(xún)定位到我們所需要的結(jié)果,不是一件容易的事。
Mongodb作為一種NoSQL數(shù)據(jù)庫(kù),非常適合存儲(chǔ)和管理非結(jié)構(gòu)化數(shù)據(jù),例如互聯(lián)網(wǎng)上的各種文本數(shù)據(jù)。假如我們用Mongodb存儲(chǔ)了很多博客文章,那么如何快速找到所有關(guān)于“nodejs”這個(gè)主題的文章呢?Mongodb內(nèi)建的全文搜索可以幫助我們完成這個(gè)功能。下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹:
在本篇博文中,將要介紹的是我使用Mongdb text search的一些經(jīng)驗(yàn)。
Mongodb text search是什么?
Mongodb text search是Mongodb對(duì)數(shù)據(jù)庫(kù)進(jìn)行搜索的功能模塊,類(lèi)似于數(shù)據(jù)庫(kù)內(nèi)建的搜索引擎。有些人可能會(huì)疑問(wèn),查數(shù)據(jù)庫(kù)為什么還需要搜索引擎?直接用條件查詢(xún)不就得了。例如在前面的文章主題搜索中,我們不可能事先提取出每篇文章的主題,然后用專(zhuān)門(mén)的字段存儲(chǔ),因此沒(méi)辦法進(jìn)行條件查詢(xún)。并且同一個(gè)主題詞,有多種不同的表達(dá)方式,例如”node”、”nodejs”可視為同一個(gè)主題。
Mongodb text search可以自動(dòng)地對(duì)大段的文本數(shù)據(jù)進(jìn)行分詞處理、模糊匹配、同義詞匹配,解決文本搜索的問(wèn)題。
建立文本索引
要使Mongodb能夠進(jìn)行全文搜索,首先要對(duì)搜索的字段建立文本索引。建立文本索引的關(guān)鍵字是text,我們既可以建立單個(gè)字段的文本索引,也可以建立包含多個(gè)字段的復(fù)合文本索引。需要注意的是,每個(gè)collection只能建立一個(gè)文本索引,且只能對(duì)String或String數(shù)組的字段建立文本索引。
我們可以通過(guò)以下命令,建立一個(gè)文本索引:
db.collection.createIndex({ subject: “text”, content: “text” })
網(wǎng)友評(píng)論