鍍金池/ 問答/數(shù)據(jù)庫(kù)/ 關(guān)于利用text索引查詢相似標(biāo)題

關(guān)于利用text索引查詢相似標(biāo)題

將文章的信息保存在Mongo中 想對(duì)文章去重 通過文章標(biāo)題來判斷 如下所示

全球需求共振,掃地機(jī)器人走進(jìn)千家萬(wàn)戶【國(guó)君機(jī)械 深度】
服務(wù)機(jī)器人行業(yè)深度報(bào)告:全球需求共振,掃地機(jī)器人走進(jìn)千家萬(wàn)戶
全球需求共振,掃地機(jī)器人走進(jìn)千家萬(wàn)戶 ——服務(wù)機(jī)器人行業(yè)

可愛智能機(jī)器人,暑假給寶貝們一個(gè)最貼心的陪讀老師!早教學(xué)習(xí)贏在起跑線!
愛優(yōu)優(yōu)仔智能機(jī)器人,暑假給寶貝們一個(gè)最貼心的陪讀老師!早教學(xué)習(xí)贏在起跑線!
可愛優(yōu)優(yōu)仔智能機(jī)器人,暑假給寶貝們一個(gè)最貼心的陪讀老師!早教學(xué)習(xí)贏在起跑線!

上述的文章認(rèn)為是重復(fù)的文章 通過對(duì)文章標(biāo)題創(chuàng)建text索引 可以找到重復(fù)的文章 如下所示

db.post.createIndex({title: 'text'})

> db.post.find({$text: {$search: '服務(wù)機(jī)器人行業(yè)深度報(bào)告:全球需求共振,掃地機(jī)器人走進(jìn)千家萬(wàn)戶'}}, {score: {$meta: 'textScore'}}).sort({score: {$meta: 'textScore'}})
{ "_id" : ObjectId("5b2f809152993004aaabdacc"), "title" : "服務(wù)機(jī)器人行業(yè)深度報(bào)告:全球需求共振,掃地機(jī)器人走進(jìn)千家萬(wàn)戶", "score" : 2 }
{ "_id" : ObjectId("5b2f809252993004aaabdacd"), "title" : "全球需求共振,掃地機(jī)器人走進(jìn)千家萬(wàn)戶 ——服務(wù)機(jī)器人行業(yè)", "score" : 1.3333333333333333 }
{ "_id" : ObjectId("5b2f809152993004aaabdacb"), "title" : "全球需求共振,掃地機(jī)器人走進(jìn)千家萬(wàn)戶【國(guó)君機(jī)械 深度】", "score" : 1.25 }

> db.post.find({$text: {$search: '暑假給寶貝們一個(gè)最貼心的陪讀老師!早教學(xué)習(xí)贏在起跑線!'}}, {score: {$meta: 'textScore'}}).sort({score: {$meta: 'textScore'}})
{ "_id" : ObjectId("5b2f836652993004aaabdad6"), "title" : "可愛智能機(jī)器人,暑假給寶貝們一個(gè)最貼心的陪讀老師!早教學(xué)習(xí)贏在起跑線!", "score" : 1.3333333333333333 }
{ "_id" : ObjectId("5b2f836652993004aaabdad7"), "title" : "愛優(yōu)優(yōu)仔智能機(jī)器人,暑假給寶貝們一個(gè)最貼心的陪讀老師!早教學(xué)習(xí)贏在起跑線!", "score" : 1.3333333333333333 }
{ "_id" : ObjectId("5b2f836652993004aaabdad8"), "title" : "可愛優(yōu)優(yōu)仔智能機(jī)器人,暑假給寶貝們一個(gè)最貼心的陪讀老師!早教學(xué)習(xí)贏在起跑線!", "score" : 1.3333333333333333 }

但是有個(gè)別情況下 并不能查出標(biāo)題相似的文章來 如下所示

中國(guó)民族語(yǔ)文翻譯局彝文智能翻譯軟件發(fā)布會(huì)在四川西昌舉行
中國(guó)民族語(yǔ)文翻譯局彝文智能翻譯軟件發(fā)布會(huì)在西昌邛海賓館舉行
昨天,中國(guó)民族語(yǔ)文翻譯局彝文智能翻譯軟件發(fā)布會(huì)在四川西昌舉行

# 為什么第二個(gè)查不出來
> db.post.find({$text: {$search: '中國(guó)民族語(yǔ)文翻譯局彝文智能翻譯軟件發(fā)布會(huì)在四川西昌舉行'}}, {score: {$meta: 'textScore'}}).sort({score: {$meta: 'textScore'}})
{ "_id" : ObjectId("5b2f80cd52993004aaabdad3"), "title" : "中國(guó)民族語(yǔ)文翻譯局彝文智能翻譯軟件發(fā)布會(huì)在四川西昌舉行", "score" : 1.1 }
{ "_id" : ObjectId("5b2f80ce52993004aaabdad5"), "title" : "昨天,中國(guó)民族語(yǔ)文翻譯局彝文智能翻譯軟件發(fā)布會(huì)在四川西昌舉行", "score" : 0.75 }

6月5號(hào)做單止盈情況表
6月7號(hào)做單止盈情況表
6月8號(hào)做單止盈情況表

# 為什么只能查出1一個(gè)來呢?
> db.post.find({$text: {$search: '6月5號(hào)做單止盈情況表'}}, {score: {$meta: 'textScore'}}).sort({score: {$meta: 'textScore'}})
{ "_id" : ObjectId("5b2f80ad52993004aaabdace"), "title" : "6月5號(hào)做單止盈情況表", "score" : 1.1 }

為什么有些明明非常相似的標(biāo)題 卻查不出來呢?

回答
編輯回答
避風(fēng)港

因?yàn)镸ongoDB對(duì)中文的支持需要安裝第三方分詞引擎RLP(Rosette Linguistics Platform)。這個(gè)引擎并不是免費(fèi)的,所以對(duì)中文的支持也只在MongoDB企業(yè)版中支持。具體請(qǐng)參考文檔:https://docs.mongodb.com/manu...

2017年6月28日 06:27