Flask-WhooshAlchemyPlus icon indicating copy to clipboard operation
Flask-WhooshAlchemyPlus copied to clipboard

本地可以正常运行,服务器上search结果为[]

Open xilixjd opened this issue 7 years ago • 11 comments

基本上与这个链接的问题差不多https://segmentfault.com/q/1010000005811334

但是我在本地运行正常,布到服务器上,甚至是重建数据库

db.drop_all()
db.create_all()

服务器上也无法索引到

本地没有设置 WHOOSH_BASE ,也是能够正常运行的,并且在当前目录下自动创建了 whoosh_index 文件夹,在服务器上运行,也创建了 whoosh_index 文件夹,但是仍然无法索引到,我想问问要怎么才能读取到索引文件

另外在 config.py 中设置了 WHOOSH_BASE = os.path.abspath('./whoosh_index') 也没用

总的来说就是本地运行正常,部署到服务器上失效

xilixjd avatar May 15 '17 05:05 xilixjd

希望能提供更多信息,比如有没有报错;手动 index_all 一下看有没有报错,生成的索引文件的大小等等

Revolution1 avatar May 15 '17 05:05 Revolution1

没有任何报错,服务器上就是搜索不到,新加的数据也搜索不到

index_all 有效,能搜索到,但是对于新加的数据还是搜索不到。。 不知道我的配置是否有问题

def create_app(DevConfig):
    app = Flask(__name__)
    app.config.from_object(DevConfig)
    with app.app_context():
        # db.drop_all()
        db.create_all()
        index_all(app) # 添加这一行可以搜索到旧的数据,但是新加入的数据仍然搜不到
    flask_whooshalchemyplus.init_app(app) 

想问一下建立索引的基本流程(最好不用 index_all(app)因为用了这个,我的服务器就比较卡。。不知道是不是这个的原因)

xilixjd avatar May 15 '17 06:05 xilixjd

你可以看这一行 https://github.com/Revolution1/Flask-WhooshAlchemyPlus/blob/master/flask_whooshalchemyplus.py#L296 新加数据是在在每次 commit 的时候会进行一次索引 你可以注意一下这里的 log 如果实在没有 log 你可以在这个函数里打个断点看会不会命中到,命中到之后怎么走的

Revolution1 avatar May 15 '17 06:05 Revolution1

好的,我先试试,我想问问服务器上重建索引应该怎么办 在本地的时候,我是删库 drop_all() 再 create_all() ,再添加数据,然后就可以搜索到了 服务器上是一样的操作,但是失效 另外我的本地和服务器上用的是同一个 mysql ,都是服务器上的 mysql

xilixjd avatar May 15 '17 06:05 xilixjd

不用删库,直接 index_all 一下索引老数据就行,新数据走前面说的 _after_flush

Revolution1 avatar May 15 '17 06:05 Revolution1

抱歉还是得打扰你,还是那个老问题 index_all 可以索引老数据没问题 但是新添加的数据在远程服务器无法搜索到,反而是在本地服务器可以被索引到。。 另外调试的话,远程服务器调试不了。。

xilixjd avatar May 15 '17 12:05 xilixjd

你可以试试 ipdb 命令行 debug

题外话:这时候 Docker 的优势就体现出来了

Revolution1 avatar May 15 '17 12:05 Revolution1

Docker 一直想学来着,但是还没开始。。 请问有什么好的教程吗,不要太难的,就部署一个简单web项目的那种

xilixjd avatar May 15 '17 12:05 xilixjd

偏题了。。。 http://open.daocloud.io/tag/python-kai-fa-zhe-de-docker-zhi-lv/

Revolution1 avatar May 15 '17 14:05 Revolution1

我也出现了无法搜索新数据的情况,_after_flush中加入断点,发现没有命中

cqzhao avatar Sep 30 '17 03:09 cqzhao

可以检查一下 model_commited 事件是否注册上了

Revolution1 avatar Mar 05 '18 14:03 Revolution1