Почему происходит медленный полнотекстовый поиск?

Рейтинг: 0Ответов: 1Опубликовано: 23.01.2023

У меня есть коллекция на 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 минуты.

Это очень плохой результат для меня и я не знаю в чём проблема. Можно ли что-то с этим сделать?

Ответы

▲ 0

MongoDB может быть не оптимальным для полнотекстового поиска больших коллекций. Возможные причины долгого времени поиска:

  • Индекс не был правильно создан или не используется для запроса

  • Коллекция не была оптимизирована для полнотекстового поиска

Чтобы решить эту проблему, следует:

  • Проверить настройки индекса и убедиться, что он используется для запроса

  • Оптимизировать коллекцию для полнотекстового поиска, таким образом, чтобы она могла быстро обрабатывать запросы

Если проблема не решается, можно рассмотреть другие решения, например, Elasticsearch, который специализируется на полнотекстовом поиске и имеет более высокую производительность.