Я работаю в закрытой системе, работающей в облаке.
Мне нужна функция поиска, использующая введенное пользователем регулярное выражение для фильтрации строк в наборе данных.
phrase = re.compile(request.get("query"))
data = Entry.all().fetch(50000) #this takes around 10s when there are 6000 records
result = x for x in data if phrase.search(x.title)
Теперь сама база данных не будет сильно меняться, и в день будет выполняться не более 200-300 запросов.
Есть ли способ каким-либо образом кэшировать все записи (я ожидаю, чтоих будет не более 50 000, каждый размером не более 500 байт), поэтому их получение не займет более 10 секунд?Или возможно распараллелить это?Я не возражаю против 10 cpu секунд, но я возражаю против 10 секунд, которые пользователь должен ждать.
Чтобы ответить на любые ответы, такие как «индексировать его и использовать .filter ()» - запрос является регулярным выражением, иЯ не знаю ни о каком механизме индексации, который позволил бы использовать регулярное выражение.