【发布时间】:2017-06-26 08:22:38
【问题描述】:
问题描述
MongoDB 版本:3.4.4
MongoDB 集合中的文档是从 XML 文件(不是 GridFS)创建的,如下所示:
{
...
"СвНаимЮЛ" : {
"@attributes" : {
"НаимЮЛПолн" : "ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ \"КОНСАЛТИНГОВАЯ КОМПАНИЯ \"ГОТЛИБ ЛИМИТИД\"",
...
},
...
}
...
}
语言是俄语。集合有大约 10,000,000 个文档,并且在字段“СвНаимЮЛ.@attributes.НаимЮЛПолн”上有一个文本索引。
一个词搜索非常快:
db.records.find({
$text: {
$search: "ГОТЛИБ"
}
})
但是用逻辑 AND 搜索几个单词太慢了,我什至不能等到它结束才能得到 explain('executionStats') 结果。
例如下一个查询很慢。查找所有包含单词“ГОТЛИБ”和“ЛИМИТИД”的文档:
db.records.find({
$text: {
$search: "\"ГОТЛИБ\" \"ЛИМИТИД\""
}
})
按短语搜索也很慢。例如查找所有包含短语“ГОТЛИБ ЛИМИТИД”的文档:
db.records.find({
$text: {
$search: "\"ГОТЛИБ ЛИМИТИД\""
}
})
getIndexes() 输出:
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "egrul.records"
},
...
{
"v" : 2,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "СвНаимЮЛ.@attributes.НаимЮЛПолн_text",
"ns" : "egrul.records",
"default_language" : "russian",
"weights" : {
"СвНаимЮЛ.@attributes.НаимЮЛПолн" : 1
},
"language_override" : "language",
"textIndexVersion" : 3
}
]
问题
我能以某种方式提高按几个词(使用逻辑 AND)或按短语搜索的速度吗?
已编辑
刚发现用逻辑OR多词搜索也很慢:
db.records.find({
$text: {
$search: "ГОТЛИБ ЛИМИТИД"
}
})
【问题讨论】:
标签: mongodb