gpt4 book ai didi

具有多个字段的mongodb文本搜索

转载 作者:IT老高 更新时间:2023-10-28 13:11:50 30 4
gpt4 key购买 nike

我正在尝试使用多个字段进行 mongodb 全文搜索。我已经在 3 个字段上设置了索引——名称、描述、类别,并使用

进行了验证

document.collection.getIndexes(),哪个返回-

[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "document.collection"
},
{
"v" : 1,
"key" : {
"name" : 2,
"description" : 1,
"category" : 1
},
"name" : "name_2_description_1_category_1",
"ns" : "document.collection",
"background" : true,
"safe" : null
}
]

现在,如果我尝试使用以下命令执行文本搜索-

db.collection.find(  {$text:{$search:'alias'}}  ).limit(10)

收到以下错误消息:

error: {
"$err" : "Unable to execute query: error processing query: ns=document.collection limit=10 skip=0\nTree: TEXT : query=alias, language=, tag=NULL\nSort: {}\nProj: {}\n planner returned error: need exactly one text index for $text query",
"code" : 17007
}

我尝试了 google 和 mongodb 文档,但找不到任何东西。

最佳答案

您应该创建一个 text index在您要搜索的字段上:

db.deals.ensureIndex({ name: "text", description : "text", category : "text" });

来自 $text 的文档运营商:

$text performs a text search on the content of the fields indexed with a text index.

您为三个字段创建的索引是复合索引,而不是文本索引。文本索引将如下所示:

{
"v" : 1,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "name_text_description_text_category_text",
"ns" : "test.deals",
"weights" : {
"category" : 1,
"description" : 1,
"name" : 1
},
"default_language" : "english",
"language_override" : "language",
"textIndexVersion" : 2
}

关于具有多个字段的mongodb文本搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257390/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com