我正在努力寻找如何为我的person集合正确地设置一个不区分变音符号的文本索引。这是一个没有整理的普通集合。
MongoDB版本是5.0.15
我需要一个文本索引(不使用mongo atlas)的名称和familyName字段。我用这个配置创建了一个索引:
{
"v": 2,
"key": {
"_fts": "text",
"_ftsx": 1
},
"name": "personsFullname",
"weights": {
"familyName": 1,
"name": 1
},
"default_language": "es",
"language_override": "language",
"textIndexVersion": 3
}
问题是,即使MongoDB手册说,从版本3开始,文本搜索对变音符号不敏感,但它并不是这样工作的。或者至少我不确定这个版本是指prop "v": 2
还是"textIndexVersion": 3
。
假设我有这三条记录:
[
{
"_id": "aaaaaaa",
"name": "Roberto ",
"familyName": "Torres García "
},
{
"_id": "bbbbbbb",
"name": "Ruben A",
"familyName": "Parras García"
},
{
_id:"ccccc",
"name": "Karla",
"familyName": "Rosas García"
}
]
如果我搜索García
(使用变音符号表示i):
db.getCollection("personsData").find({ "$text": { "$search": "García" } })
它找到3条记录。
但是如果我搜索Garcia
(不使用变音符号表示i):
db.getCollection("personsData").find({ "$text": { "$search": "Garcia" } })
它找不到任何记录。
我错过了什么?
任何帮助或提示都非常感谢。
先谢谢你。
1条答案
按热度按时间ibrsph3r1#
@rickhg12hs建议:
在网上 mongoPlayground,正如@rickhg12hs指出的那样,是这样工作的:
操场链接:https://mongoplayground.net/p/P6TVAR8T1oU
如果你想在本地示例中重现这个例子(我使用的是docker 6.0.5):
创建索引
启动查询(您可以尝试 enfermería 和 enfermeria 两个选项,您将获得结果
我不需要去听那个详细的版本
我在其他帖子上读到尝试
版本6似乎不需要此内容
并且在查询中指示忽略变音符号: