Я пытаюсь загрузить данные в поисковик Whoosh.Есть около 7 000 000 строк для вставки.Сначала я получаю все строки с psycopg2
из базы данных PostgreSQL, затем вставляю их с writer.add_document(some_data_here)
в индекс Whoosh.Мой writer
объект выглядит следующим образом:
writer = index.writer(limitmb=1024,procs=5,multisegment=True)
Проблема в том, что выполнение index.searcher().documents()
(которое должно возвращать все документы в индексе) возвращает значительно меньшее количество строк - около 5 000 000.Я могу подтвердить это другим запросом, просто ища Term
, который подходит для каждой записи - я получаю идентичный результат (около 5 млн.).
Я подумал, что это может быть некоторый параллелизм Python или проблема с памятью, поэтому япытался загрузить его по-крупному - я разделил данные на равные блоки по 500 000 записей, но без удачи все равно получил меньшую сумму.Я также попытался поиграть с параметрами writer
, но снова безуспешно.
Я обнаружил проблему, пытаясь найти запись, которая, как я точно знал, должна существовать - это не так.Я использую 16 ГБ ОЗУ и 6-процессорный сервер, поэтому ресурсы не должны быть проблемой.