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