MongoDB:弹性搜索的索引策略(排序和强度)
我正在使用MongoDB,有一个相当小的文档集合,如下所示:MongoDB:弹性搜索的索引策略(排序和强度),mongodb,mongoose,mongodb-query,mongoosastic,Mongodb,Mongoose,Mongodb Query,Mongoosastic,我正在使用MongoDB,有一个相当小的文档集合,如下所示: name:“始终使用en_GB语言环境,默认名称”, ticker:“名称”字段中的衍生短名称。比如说,如果我的全名是Aleksandr,那么股票代码将是Sasha的 name_locale:'此字段在不同的语言环境中有一个字符串,有时是西里尔语,有时是西班牙语', 语言环境:“en_GB'、//或“en_US”,它显示名称的语言环境字段 区域“欧洲”//或北美,在这种情况下并不重要 所有这些字段仅为String类型 另外,我有一个
name:“始终使用en_GB语言环境,默认名称”,
ticker:“名称”字段中的衍生短名称。比如说,如果我的全名是Aleksandr,那么股票代码将是Sasha的
name_locale:'此字段在不同的语言环境中有一个字符串,有时是西里尔语,有时是西班牙语',
语言环境:“en_GB'、//或“en_US”,它显示名称的语言环境字段
区域“欧洲”//或北美,在这种情况下并不重要
所有这些字段仅为String
类型
另外,我有一个API端点,我想接收一个参数,可以是这些字段的任何值。因此它可以是param=Europe
或param=en_GB
或param=name\u locale\u value
那么,在这种情况下,我需要一个文本索引,对吗?我有
schema.index(
{ name: 'text', name_locale: 'text', ticker: 'text', region: 'text' },
{ name: 'SearchQuery' },
);
但正如您可能注意到的,我没有任何排序规则和强度值。因此,问题是:
如何使用strength:1
进行不区分大小写的搜索,如果我还需要包含/search byname\u locale
字段,该字段具有不同语言的字符串值
文档示例:
{
name: 'Aleksandr,
ticker 'Sasha',
name_locale: 'Саша',
locale: 'ru_RU',
region: 'Europe',
},{
name: 'Jonathan',
ticker 'John',
name_locale: 'Jonathan',
locale: 'en_US',
region: 'North America',
}
- 我是否需要构建许多单字段索引?并使用
运算符查找所有字段$或
- 或者Mongo4.4中的
索引是否支持text
而不支持strength
locale
- 也许还有另一种通用方法,比如使用
。使用Regexp查找
?如果你能分享一些建议,我将不胜感激
await collection.find(
{ $text: { $search: QueryValue } }, //QueryValue = 'europe'
{ score: { $meta: 'textScore' } },
)