首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB >文本查询>相似词

MongoDB >文本查询>相似词
EN

Stack Overflow用户
提问于 2019-08-01 17:52:14
回答 1查看 45关注 0票数 1

如何在mongo文本查询中搜索相似的单词

相似单词的例子:'Jean‘,'Jeann’,'Jeean‘,'Jeaan’

我尝试了mongo的文本查询,我发现的最好的事情是,如果两个文档具有相同的单词但不同的值,我可以用文本分数来获取它们

下面是我尝试的示例:

我在搜索'Jean‘

代码语言:javascript
复制
{
 'name': 'Jean foo',
 'somethingElse': ['one', 'two', 'three']
},
{
 'name': 'Jean bar',
 'somethingElse': ['one']
},
,
{
 'name': 'Jean',
 'somethingElse': ['one']
}

我得到了带有文本分数的3个文档,它工作得很好,但我不能得到这样的文档

代码语言:javascript
复制
{
 'name': 'Jeaan',
 'somethingElse': ['one']
}

数据示例:

代码语言:javascript
复制
{
 'name': 'Jean',
 'somethingElse': ['one', 'two', 'three']
},
{
 'name': 'Jeaan',
 'somethingElse': ['one']
}
{
 'somethingElse': 'Jeann',
 'categories': ['one', 'two']
}
EN

回答 1

Stack Overflow用户

发布于 2019-08-01 19:25:47

在名称列上创建文本索引:

已创建名为shop的集合:

代码语言:javascript
复制
 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")
            ]
    }

Step2:已在名称字段上创建文本索引:

代码语言:javascript
复制
db.shop.createIndex({name:"text"})

Step3:

代码语言:javascript
复制
db.shop.find({$text:{$search:"Jean Jeann Jeean Jeaan"}})

输出:

代码语言:javascript
复制
{ "_id" : ObjectId("5d42c7be2f40da142ffb5107"), "name" : "Jeaan", "somethingElse" : [ "one" ] }
{ "_id" : ObjectId("5d42c7be2f40da142ffb5106"), "name" : "Jean", "somethingElse" : [ "one", "two", "three" ] }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57306345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档