MongoDB:按给定名称和用户名查询用户的最佳方式
我正在尝试实现一个用户搜索,它可以查看用户的名字和用户名,同时还可以根据相关性对结果进行排序 我试着创建一个这样的文本索引MongoDB:按给定名称和用户名查询用户的最佳方式,mongodb,search,Mongodb,Search,我正在尝试实现一个用户搜索,它可以查看用户的名字和用户名,同时还可以根据相关性对结果进行排序 我试着创建一个这样的文本索引 db.users.createIndex({ username: 'text', firstName: 'text', lastName: 'text' }, { name: 'text_search', default_language: 'en', language_override: 'language' }) 但这并
db.users.createIndex({
username: 'text',
firstName: 'text',
lastName: 'text'
},
{
name: 'text_search',
default_language: 'en',
language_override: 'language'
})
但这并没有考虑部分术语,所以如果我搜索“Juan F”,我会得到以下结果
{ score: 3.7, username: "juanjo", firstName: "Juan", lastName: "Rivas F" },
{ score: 2.95, username: "Juan.rodriguez", firstName: "Juan", lastName: "Rodriguez" },
{...} // 6 more
{ score: 2.2, lastName: "Fuentes", firstName: "Juan", username: "juanfuentes" }
我知道文本索引会考虑相似的词,但不会考虑部分词,因此使用“Juan Fuente”我会得到期望的结果,而使用“Juan F”、“Juan Fu”等我不会
有没有办法改进这一点,以便能够实现在用户键入搜索框时返回结果的搜索
编辑这是我尝试的查询:
db.users.find(
{ $text: { $search: "juan f" } },
{ score: { $meta: "textScore" } }
).sort({ score: { $meta: "textScore" } })
您正在搜索哪个领域?是用户名吗?文本搜索使用创建索引时指定的所有字段。我更新了问题。你在搜索哪个领域?是用户名吗?文本搜索使用创建索引时指定的所有字段。我更新了问题。