摘要:為了執(zhí)行這一運(yùn)算,使用了和運(yùn)算符。需要注意的是,視圖不支持。只查找和,不包含排序?qū)?huì)它的返還默認(rèn)是未排序的。但是文本查詢(xún)請(qǐng)求將會(huì)計(jì)算相關(guān)的評(píng)分對(duì)每一個(gè)即指定與請(qǐng)求匹配的程度。要想按照評(píng)分去排序,你必須顯性地指出字段并且根據(jù)他們來(lái)排序。
簡(jiǎn)介
MongoDB支持一段內(nèi)容的文本查詢(xún)。為了執(zhí)行這一運(yùn)算,MongoDB使用了 text index 和 $text
運(yùn)算符。需要注意的是,Views視圖不支持 text search。
例子
這一個(gè)例子將會(huì)展示如何創(chuàng)建一個(gè) text index 和如何使用它去查找 ‘coffee shops’, 在給定的只有文本字段里。首先創(chuàng)建一個(gè) collection stores。
db.stores.insert( [ { _id: 1, name: "Java Hut", description: "Coffee and cakes" }, { _id: 2, name: "Burger Buns", description: "Gourmet hamburgers" }, { _id: 3, name: "Coffee Shop", description: "Just coffee" }, { _id: 4, name: "Clothes Clothes Clothes", description: "Discount clothing" }, { _id: 5, name: "Java Shopping", description: "Indonesian goods" } ] )
Text Index 文本索引
MongoDB 提供文本索引來(lái)支持文本查詢(xún)請(qǐng)求在一串內(nèi)容里,文本索引可以包含任意字段 只要它的值是一個(gè)string 或者 一個(gè) string 元素的 array。
為了執(zhí)行文本查詢(xún)請(qǐng)求,你必須有一個(gè)文本索引在你的 collection里。一個(gè) collection 只能有一個(gè)文本查詢(xún)索引,但是那一個(gè)索引可以覆蓋多個(gè)字段。
例如你可以運(yùn)行下面的代碼,可以操作文本查詢(xún)?cè)?name 和 description 字段之上。
db.stores.createIndex( { name: "text", description: "text" } ) $text Operator
使用 $text 請(qǐng)求運(yùn)算符去執(zhí)行文本查詢(xún)?cè)谝粋€(gè) collection里通過(guò)文本索引。
直接用例子來(lái)解釋了。
這個(gè)語(yǔ)句就是去查找所有stores包含任意關(guān)鍵詞在[‘coffee’, "shop","java"]中
db.stores.find( { $text: { $search: "java coffee shop" } } )
精準(zhǔn)短語(yǔ)
通過(guò)包裝他們?cè)陔p引號(hào)里
db.stores.find( { $text: { $search: "java "coffee shop"" } } )
排除某一項(xiàng)
在關(guān)鍵詞前加 - 符號(hào)。只查找 “java” 和 “shop”,不包含 “coffee”
db.stores.find( { $text: { $search: "java shop -coffee" } } )
排序
MongoDB將會(huì)它的返還默認(rèn)是未排序的。但是文本查詢(xún)請(qǐng)求將會(huì)計(jì)算相關(guān)的評(píng)分對(duì)每一個(gè) document 即指定 document 與請(qǐng)求匹配的程度。
要想按照評(píng)分去排序,你必須顯性地指出 $meta textScore字段并且根據(jù)他們來(lái)排序。
db.stores.find( { $text: { $search: "java coffee shop" } }, { score: { $meta: "textScore" } } ).sort( { score: { $meta: "textScore" } } ) Text search is also available in the aggregation pipeline.
原文:https://docs.mongodb.com/manu...
歡迎加入學(xué)習(xí)交流群569772982,大家一起學(xué)習(xí)交流。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/70607.html
摘要:全文索引在中每個(gè)集合只允許創(chuàng)建一個(gè)索引,因此不用擔(dān)心存在多個(gè)索引造成沖突的問(wèn)題。全文索引創(chuàng)建全文索引創(chuàng)建方法與創(chuàng)建單鍵索引復(fù)合索引類(lèi)似。 在MongoDB中通過(guò)建立索引可以進(jìn)行高效的查詢(xún),如果沒(méi)有索引MongoDB將會(huì)掃描整個(gè)集合與查詢(xún)的條件進(jìn)行匹配,這對(duì)于性能會(huì)造成很大的消耗。技術(shù)博客: Node.js技術(shù)棧 快速導(dǎo)航 Mongodb索引類(lèi)型 索引屬性 索引實(shí)例測(cè)試 索引(Ind...
摘要:全文索引主要用于搜索業(yè)務(wù)的索引,通過(guò)多種不同的查詢(xún)方式和條件進(jìn)行全文索引,適合搜索引擎和站內(nèi)搜索業(yè)務(wù)。注全文索引全文索引目前不支持中文。 簡(jiǎn)述 MongoDB中的索引其實(shí)類(lèi)似于關(guān)系型數(shù)據(jù)庫(kù),都是為了提高查詢(xún)和排序的效率的,并且實(shí)現(xiàn)原理也基本一致。由于集合中的鍵(字段)可以是普通數(shù)據(jù)類(lèi)型,也可以是子文檔。MongoDB可以在各種類(lèi)型的鍵上創(chuàng)建索引。 索引 MongoDB的索引就是集合Co...
摘要:全文索引主要用于搜索業(yè)務(wù)的索引,通過(guò)多種不同的查詢(xún)方式和條件進(jìn)行全文索引,適合搜索引擎和站內(nèi)搜索業(yè)務(wù)。注全文索引全文索引目前不支持中文。 簡(jiǎn)述 MongoDB中的索引其實(shí)類(lèi)似于關(guān)系型數(shù)據(jù)庫(kù),都是為了提高查詢(xún)和排序的效率的,并且實(shí)現(xiàn)原理也基本一致。由于集合中的鍵(字段)可以是普通數(shù)據(jù)類(lèi)型,也可以是子文檔。MongoDB可以在各種類(lèi)型的鍵上創(chuàng)建索引。 索引 MongoDB的索引就是集合Co...
閱讀 1237·2021-09-10 10:51
閱讀 987·2019-08-30 15:53
閱讀 2794·2019-08-30 12:50
閱讀 1038·2019-08-30 11:07
閱讀 2054·2019-08-30 10:50
閱讀 3687·2019-08-29 18:47
閱讀 1374·2019-08-29 18:44
閱讀 1662·2019-08-29 17:01