Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB:按给定名称和用户名查询用户的最佳方式_Mongodb_Search - Fatal编程技术网

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" } })

您正在搜索哪个领域?是用户名吗?文本搜索使用创建索引时指定的所有字段。我更新了问题。你在搜索哪个领域?是用户名吗?文本搜索使用创建索引时指定的所有字段。我更新了问题。