Я видел несколько вариантов вопроса «эффективно искать строки в файле (файлах)» в Stackoverflow, но не совсем как в моей ситуации.
У меня есть один текстовый файл, который содержит относительно большое количество (> 300 КБ) строк.Подавляющее большинство этих строк представляют собой несколько слов (например, «Плесси против Фергюсона», «Джон Смит» и т. Д.).
Оттуда мне нужно искать черезочень большой набор текстовых файлов (набор юридических документов объемом более 10 ГБ) и подсчет экземпляров этих строк.
Из-за количества строк поиска, строк, содержащих несколько слов, и размера цели поиска, многие "стандартные" решения кажутся несостоятельными.
Некоторые вещи немного упрощают проблему -
Мне не нужны сложные токенизации / стемминги / и т. Д. (Например, единственные, что меня волнует, это "Plessy vФергюсон ", не нужно беспокоиться о" Плесси "," Плесси и др. "И т. Д.)
будут некоторые дубликаты (например, несколько человек по имени«Джон Смит»), однако, это не очень статистически значимая проблема для этого набора данных, так что ... если несколько Джона Смита объединяются в один подсчет, это нормально.
Мне нужно только сосчитать эти конкретные случаи;Мне не нужно возвращать результаты поиска
10 экземпляров в 1 файле считаются так же, как 1 экземпляр в каждом из 10 файлов
Любыепредложения по быстрым / грязным способам решения этой проблемы?
Я исследовал NLTK, Lucene и других, но они кажутся излишними для проблемы, которую я пытаюсь решить.Должен ли я смириться с этим и импортировать все в БД?брутфорс grep это 300к раз?;)
Мой предпочтительный инструмент разработки - это Python.
Документы, которые нужно искать, в основном являются легальными документами, подобными этим - http://www.lawnix.com/cases/plessy-ferguson.html
Ожидаемые результаты - подсчетза то, как часто дело упоминается в этих документах - «Плесси против Фергюсона: 15»