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

關于利用text索引查詢相似標題

將文章的信息保存在Mongo中 想對文章去重 通過文章標題來判斷 如下所示

全球需求共振,掃地機器人走進千家萬戶【國君機械 深度】
服務機器人行業(yè)深度報告:全球需求共振,掃地機器人走進千家萬戶
全球需求共振,掃地機器人走進千家萬戶 ——服務機器人行業(yè)

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

上述的文章認為是重復的文章 通過對文章標題創(chuàng)建text索引 可以找到重復的文章 如下所示

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

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

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

但是有個別情況下 并不能查出標題相似的文章來 如下所示

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

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

6月5號做單止盈情況表
6月7號做單止盈情況表
6月8號做單止盈情況表

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

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

回答
編輯回答
避風港

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

2017年6月28日 06:27