Как данные флеш-индекса могут импортироваться вручную?
Я использую флеш-whooshalchemy на sqlite, и вручную импортировал много данных, теперь whoosh не может искать ничего из этого. Я думаю, это потому, что кто-то еще не проиндексировал данные, верно? Как я могу добавить индекс Whoosh на эти данные вручную?
3 ответа
Взгляните на https://gist.github.com/davb5/21fbffd7a7990f5e066c
Я только что написал это, чтобы решить ту же проблему - перестроить поисковые индексы после массового импорта данных.
Это не будет работать для всех остальных (мой импорт "lib" содержит все мои сторонние библиотеки, и вам нужно будет указать свои модели Flask-SQLAlchemy в блоке if name== "main"), но этого должно быть достаточно, чтобы вы начали.
Как указано в комментариях к файлу, вам следует рассмотреть возможность удаления папки search.db (WHOOSH_BASE), так как этот скрипт не удаляет удаленные данные, а только переиндексирует текущий набор данных.
Я обнаружил, что гораздо быстрее импортировать все мои данные с использованием ядра SQLAlchemy, чем запускать этот сценарий, по сравнению с импортом моих данных с помощью SQLAlchemy ORM с обновлениями индекса Whoosh на лету (44 с против 48 м для моего набора данных).
Вы можете попробовать мою вилку https://github.com/Revolution1/Flask-WhooshAlchemyPlus
просто
$ pip install flask_whooshalchemyplus
а также
from flask_whooshalchemyplus import index_all
index_all(app)
Код для расширения довольно легкий, вы можете просмотреть его на github. Глядя на это, он выглядит так, как будто он просто наблюдает за изменениями, когда SQLAlchemy сбрасывает сеанс, поэтому введенные извне данные не будут автоматически проиндексированы.
В зависимости от объема данных, и если это единичная загрузка данных, может быть проще всего удалить индекс Whoosh (по умолчанию каталог с именем 'whoosh_index'), так как он выглядит так, как если бы он переиндексировал все, если этот индекс не найден ( см. строки 154-165).