vlad0405
Окт. 11, 2011 02:46:49
гуру питона, подскажите пожалуйста.
У меня есть файл, в котором 25 миллионов предложений.
Есть список заданных фраз и мне надо делать выборку по условию,
все слова из заданной фразы встречаются в предложении.
До недавнего времени объемы заданных фраз были маленькие и я делал просто методом перебора строчек файла.
При заданном количестве фраз от 5 до 20 обработка проходила за 5-10 минут и меня устраивало.
Но сейчас объемы поиска могут значительно возрасти, и такой подход уже не годится.
В оперативку весь файл не помещается.
MySQL будет очень медленно на таком объеме работать.
Подскажите что можно попробовать?
o7412369815963
Окт. 11, 2011 05:21:43
я для этих целей использовал mongoDB (выборка по нескольким тегам), база около 5М “предложений”, искалось в течении секунды.
vlad0405
Окт. 11, 2011 17:33:33
o7412369815963
я для этих целей использовал mongoDB (выборка по нескольким тегам), база около 5М “предложений”, искалось в течении секунды.
а искалось по точному вхождению?
Мне надо что-то типа LIKE в MySQL.
Например надо найти
народные сказки
народная сказка
народных сказок
и так далее
я ввожу “народ сказ” и пошел поиск
MONGO такое может?
o7412369815963
Окт. 11, 2011 20:43:09
vlad0405
o7412369815963
я для этих целей использовал mongoDB (выборка по нескольким тегам), база около 5М “предложений”, искалось в течении секунды.
а искалось по точному вхождению?
Мне надо что-то типа LIKE в MySQL.
Например надо найти
народные сказки
народная сказка
народных сказок
и так далее
я ввожу “народ сказ” и пошел поиск
MONGO такое может?
в монго можно искать регексами: народн** сказк* ( народн{2}\s+сказ.)
но для не точного вхождения лучше использовать поисковой движок, например sphinx search, этот вроде как быстро ищет в базах терабайтного размера + есть морфологический разбор.
vlad0405
Окт. 11, 2011 21:08:29
Огромное спасибо за наводку!
Буду читать инфо по этим продуктам.