MongoDB>文本查询>相似词

时间:2019-08-01 09:52:13

标签: mongodb

如何在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']
}

1 个答案:

答案 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" ] }