我正在开发一个在云中运行的封闭系统。
我需要的是一个搜索功能,它使用用户输入的正则表达式来过滤数据集中的行。
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 秒?或者也许是并行化它?我不介意 10cpu 秒,但我确实介意用户必须等待 10 秒。
要解决诸如“索引它并使用 .filter()”之类的任何答案 - 查询是一个正则表达式,我不知道任何允许使用正则表达式的索引机制。