gpt4 book ai didi

mongodb - Mongodb 全文搜索找不到

转载 作者:可可西里 更新时间:2023-11-01 10:23:52 26 4
gpt4 key购买 nike

我正在尝试在我的 Mongo 数据库中实现全文搜索。它是音轨元数据的数据库。我不想通过 trackartistNametitle 进行搜索。我在 tracks 集合中有这些记录(仅显示重要字段):

db.tracks.find({},{artistName: 1, title: 1})
{ "_id" : "A10328E00047516670", "artistName" : "Tapani Kansa", "title" : "Tuulia" }
{ "_id" : "A10328E00047516661", "artistName" : "Tapani Kansa", "title" : "Rakkautemme valssi" }
{ "_id" : "A10328E0004751669W", "artistName" : "Tapani Kansa", "title" : "Täysikuu" }
{ "_id" : "A10328E0004751668Y", "artistName" : "Tapani Kansa", "title" : "Muista minua" }

我已经在这个集合上创建了文本索引:

db.tracks.createIndex({artistName: 'text', title: 'text', lyrics: 'text'})

但是当我尝试搜索轨道时,没有返回任何结果:

rs-ds047345:PRIMARY> db.tracks.find({$text: {$search: 'Tapani'}}).size()
0
rs-ds047345:PRIMARY> db.tracks.find({$text: {$search: 'Rakkautemme valssi'}}).size()
0

我无意中注意到,当我从搜索词的末尾裁剪一些字母时,我开始得到一些结果......所以全文搜索以某种方式起作用,只是不是我希望和期望的方式。

db.tracks.find({$text: {$search: 'Tapa'}}).size()
12
rs-ds047345:PRIMARY> db.tracks.find({$text: {$search: 'Rakkaute'}}).size()
1

谁能告诉我,我怎样才能使用全词搜索数据库,或者我做错了什么?

我已经在 MongoDB 版本 3.0.8 和 3.2.1 上尝试过

最佳答案

根据规范 -

For case insensitive and diacritic insensitive text searches, the $text operator matches on the complete stemmed word. So if a document field contains the word blueberry, a search on the term blue will not match. However, blueberry or blueberries will match.

我建议的是普通索引和正则表达式搜索


 db.tracks.createIndex({"artistName": 1})
db.tracks.createIndex({ "title" : 1})
db.tracks.createIndex({ "lyrics": 1})

db.tracks.find({artistName:"/Tap/[0-10]"}).explain()

方括号将强制对正则表达式进行索引扫描而不是 colscan

正在 3.0.6 和 3.2.3 上测试,但没有成功 :(

关于mongodb - Mongodb 全文搜索找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35752708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com