在垂直领域内优化Whoosh搜索结果

刚开始使用whoosh建立了全文检索后试了几个感觉搜索结果还是蛮准的(因为我用的例子比较常见,所以结果比较符合预期),但别人试过之后发现很多搜索结果一点都不准,而且有的翻好几页都没有想要的结果。。。 很郁闷,其实搜索结果也不是不准,毕竟人家算法打分就是这样,自己看看里面的内容就会发现这些排在前面的是有原因的,只是不符合特定领域的预期而已,后来跟我leader一起又就行了比较深入的研究,对搜索...

阅读全文

Airflow跳过后续任务(ShortCircuitOperator)及BashOperator模版参数传入

再次使用airflow对其也有了更深刻的理解,发现之前使用到的内容真的比较少,基本上就当一个可以管理任务依赖的crontab用了。 之前写dag的时候是当一个完整的项目写,基础类比如数据库连接都是自己封装,各种配置也自己用环境变量或者配置文件来配置。 随着理解的深入,发现其实人家做这个项目就是给大家提供一个开箱即用的任务管理平台,而不是让你还费半天劲建立项目。 基础连接类可以使用airflo...

阅读全文

Mongodb副本集与分片

因为之前没用过mongo,所以最近的开发踩了不少坑,现在熟练了不少。 mongo在许多地方用起来还有许多不如意的地方,比如不知道如何加行锁,虽然mongo本身可以加写锁, 多写的时候保证原子性,但不能向mysql在事务中select ... for update这样加锁, 这样可以在应用代码中添加逻辑并且保证该对应行不被读取或修改。 还好的是Mongodb4.0是支持事务的(看网上貌似3...

阅读全文

airflow自定义mongodb查询页面

之前主数据库都是用的关系型数据库,而现在公司的主流是mongo,也是第一次用,很多也是现学现卖的, 而且各种框架对mongo这种nosql数据库支持也不是很好,比如Django和sqlalchemy就不支持mongo。 由于做用户数据分析,所以需要一个data pipeline平台,而且线上和测试环境的mongo库不能外网连接,所以使用airflow来做ETL,并且可以通过 airflow...

阅读全文

全文检索调研(Mongodb和Whoosh)

公司有一个类似搜索引擎的项目,现在公司是做保险的,这个项目就是用来搜索已经解析格式化的保险的,现在的模式搜索比较简单,就是根据保险名称、 公司等字段筛选,而且也没有先后排名。最近我leader让我调研一下对该功能进行改造,以实现全文检索,并跟搜索引擎那样根据权重实现先后排名。 因为我们数据库存储用的Mongodb,所以首先查看的在mongo层面能否实现该需求,并且我们后端是python实现...

阅读全文

airflow任务上下文与区时

在使用ariflow的跑任务的时候有时候是要知道执行任务的逻辑时间,比如在20号跑15号的任务是,那么逻辑上时间就是15号,而不是20号,因为你可能会处理15号的数据。 这个是很多任务中经常用到的,实现这个比较简单,在PythonOperator传入参数provide_context=True,arilfow会自动传入上下文参数。 ... demo_task = PythonOperat...

阅读全文