如何在mongo文本查询中搜索相似的单词
相似词的示例:'Jean''Jeann''Jean''Jeaan'
我尝试了mongo的文本查询,我发现最好的发现是,如果2个文档具有相同的单词但值不同,那么我可以通过文本得分获得它们
我尝试过的例子:
我正在搜索“吉恩”
{
'name': 'Jean foo',
'somethingElse': ['one', 'two', 'three']
},
{
'name': 'Jean bar',
'somethingElse': ['one']
},
,
{
'name': 'Jean',
'somethingElse': ['one']
}
我得到了3个带有文本分数的文档,它工作得很好,但是我无法获得这样的文档
{
'name': 'Jeaan',
'somethingElse': ['one']
}
数据示例:
{
'name': 'Jean',
'somethingElse': ['one', 'two', 'three']
},
{
'name': 'Jeaan',
'somethingElse': ['one']
}
{
'somethingElse': 'Jeann',
'categories': ['one', 'two']
}
答案 0 :(得分:0)
在名称列上创建文本索引:
创建的商店名称为收藏集:
db.shop.insertMany([{
... 'name': 'Jean',
... 'somethingElse': ['one', 'two', 'three']
... },
... {
... 'name': 'Jeaan',
... 'somethingElse': ['one']
... },
... {
... 'somethingElse': 'Jeann',
... 'categories': ['one', 'two']
... }])
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5d42c7be2f40da142ffb5106"),
ObjectId("5d42c7be2f40da142ffb5107"),
ObjectId("5d42c7be2f40da142ffb5108")
]
}
第2步:在名称字段上创建了文本索引:
db.shop.createIndex({name:"text"})
Step3:
db.shop.find({$text:{$search:"Jean Jeann Jeean Jeaan"}})
输出:
{ "_id" : ObjectId("5d42c7be2f40da142ffb5107"), "name" : "Jeaan", "somethingElse" : [ "one" ] }
{ "_id" : ObjectId("5d42c7be2f40da142ffb5106"), "name" : "Jean", "somethingElse" : [ "one", "two", "three" ] }