Я создаю службу автозаполнения для моей коллекции сообщений mongo db, где пользователь может начать вводить заголовок сообщения.Он должен вернуть все сообщения с этим ключевым словом в заголовке и отсортировать их по полю «total».
У меня есть поле «lower», которое является строчной версией поля заголовка, которое мы хотим найти, ина котором установлен индекс.Так как я ищу любое совпадение по ключевому слову, я выполняю поиск по регулярному выражению по LowerCaseTitle для слов, которые появляются в любом месте заголовка, а не только в начале.
Я посмотрел план выполнения, и похоже, чтосканировать каждый элемент (в полной коллекции сообщений 10061 элемент).Я попытался намекнуть как на индекс «lower_1», так и на индекс «total_-1», и они кажутся похожими, но общий индекс кажется лучше с меньшим nscanned числом, если я установил для запроса ограничение в 50.Что я могу сделать, чтобы оптимизировать?Я не могу придумать ничего простого из головы для такого рода полнотекстового поиска.
"cursor" : "BtreeCursor lower_1",
"nscanned" : 10061,
"nscannedObjects" : 2,
"n" : 2,
"scanAndOrder" : true,
"millis" : 154,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"lower" : [
[
"",
{
}
]
]
}