如何将flask-whooshalchemy索引数据手动导入?

时间:2014-05-05 12:11:58

标签: python-2.7 sqlite flask whoosh

我在sqlite上使用flask-whooshalchemy,并且手动导入了大量数据,现在飞快移动可以搜索没有数据。我认为这是因为哎呀没有索引任何数据,对吧?我怎样才能手动添加这些数据的嗖嗖索引?

3 个答案:

答案 0 :(得分:2)

你可以尝试我的前叉https://github.com/Revolution1/Flask-WhooshAlchemyPlus

$ pip install flask_whooshalchemyplus

from flask_whooshalchemyplus import index_all

index_all(app)

答案 1 :(得分:1)

查看https://gist.github.com/davb5/21fbffd7a7990f5e066c

我刚刚写了这个来解决同样的问题 - 在批量数据导入后重建搜索索引。

对于其他任何人来说都不会开箱即用(我的“lib”导入包含我的所有第三方库,你需要在if 名称中指定你的Flask-SQLAlchemy模型 ==“主要”阻止),但它应该足以让你开始。

如文件注释中所述,您应该考虑删除search.db文件夹(WHOOSH_BASE),因为此脚本不会删除已删除的数据,只会重新索引当前数据集。

我发现使用SQLAlchemy核心然后运行此脚本可以更快地导入我的数据,而不是通过SQLAlchemy ORM导入我的数据,以及即时的Whoosh索引更新(44s vs 48m for my data set)

答案 2 :(得分:0)

扩展程序的代码非常轻you can view it on github。通过查看它看起来确实只是在SQLAlchemy刷新会话时监视更改,因此外部输入的数据不会自动编入索引。

根据数据量的不同,如果这是一次性数据加载,最简单的方法就是删除Whoosh索引(默认情况下是一个名为'whoosh_index'的目录),因为它看起来会重新如果找不到该索引,则索引所有内容(see lines 154-165)。