Эффективное создание индекса документа для большого количества небольших документов в большом файле - PullRequest
2 голосов
/ 23 сентября 2011

Цель

У меня очень большой корпус следующего формата:

<entry id=1>
Some text
...
Some more text
</entry>

...

<entry id=k>
Some text
...
Some more text
</entry>

В этом корпусе десятки миллионов записей, и еще больше длядругие корпорации, с которыми я хочу иметь дело.

Я хочу рассматривать каждую запись как отдельный документ и сопоставлять слова корпуса со списком документов, в которых они встречаются.

Проблема

В идеале, я бы просто разделил файл на отдельные файлы для каждой записи и запустил что-то вроде индексатора Lucene по каталогу со всеми файлами.Однако создание миллионов и миллионов файлов может привести к сбою в работе моего лабораторного компьютера.

Вопрос

Существует ли относительно простой способ решения этой проблемы?Должен ли я хранить все записи в одном файле?Как я могу отследить, где они находятся в файле для использования в индексе?Должен ли я использовать какой-то другой инструмент, кроме отдельных файлов для каждой записи?

Если это уместно, я делаю большую часть кода на Python, но приветствуются решения на другом языке.

1 Ответ

2 голосов
/ 23 сентября 2011

Ну, хранить все записи в одном файле не очень хорошая идея.Вы можете обработать большой файл с помощью генераторов, чтобы избежать проблем с памятью, запись за записью, а затем я бы рекомендовал хранить каждый файл в базе данных.Находясь в процессе, вы можете динамически создавать все релевантные материалы, такие как частоты терминов, частоты документов, списки публикаций и т. Д., Которые вы также можете сохранить в базе данных.

Этот вопрос можетесть некоторая полезная информация.

Также взгляните на this , чтобы получить представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...