Почему происходит медленный полнотекстовый поиск?
У меня есть коллекция на 7,5 млн строк, записанная в формате JSON:

Я хочу производить полнотекстовый поиск по ней.
Для этого я создавал индекс через MongoDB Compass:

Или python:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
client.mydbb.test.create_index([("$**", pymongo.TEXT)])
Но когда я делаю запрос:
query = {"$text": {"$search": "\"79250614872\""}}
for value in client.mydbb.test.find(query):
print(value)
То время поиска 2-3 минуты.
Это очень плохой результат для меня и я не знаю в чём проблема. Можно ли что-то с этим сделать?
Ответы (1 шт):
MongoDB может быть не оптимальным для полнотекстового поиска больших коллекций. Возможные причины долгого времени поиска:
Индекс не был правильно создан или не используется для запроса
Коллекция не была оптимизирована для полнотекстового поиска
Чтобы решить эту проблему, следует:
Проверить настройки индекса и убедиться, что он используется для запроса
Оптимизировать коллекцию для полнотекстового поиска, таким образом, чтобы она могла быстро обрабатывать запросы
Если проблема не решается, можно рассмотреть другие решения, например, Elasticsearch, который специализируется на полнотекстовом поиске и имеет более высокую производительность.