首页 新闻 会员 周边

全文搜索的设计or实现思路是怎么样的?

0
悬赏园豆:50 [已解决问题] 解决于 2018-01-21 06:44

打算用的是ElasticSearch, 分词用IK. 

比如博客园的搜索文章, 搜索的Field: 博客标题、博客内容、博客标签

我现在的想法是:

  1. 我只会第一次接入elastic同步一次数据库数据到 elastic-server。

  2. 以后新增or更新 博客, 通过新增代码逻辑, 每次发送请求给 elastic-server, 

   大致"_source":{"articleId":"...", "articleTitle":"...","articleConent":"...","articleTag":"..."};

  在elastic-server返回success才保存博客到database,  否则回滚事物. (不知道这有没有更好的实现)

  3. 搜索时: 搜索出符合的结果, 然后用articleId去走正常的 查看博客逻辑.

    包括搜索列表展示, 比如每页10条, 我都会用这10个articleId去组装列表数据(因为是app的搜索)

  4. 删除: 我会根据articleId去删除 elastic-server中的数据(document)

我不知道以上的思路是不是可以,或有哪些地方可优化? 求做过的指点一下.

淡丶无欲的主页 淡丶无欲 | 初学一级 | 园豆:87
提问于:2018-01-14 07:45
< >
分享
最佳答案
0

思路大致没什么问题

1 关于数据同步

  不过博客的存储引擎现在大部分都是mongodb这类的,这种数据库跟Elasticsearch有专门的同步工具,不需要你手动维护。
2 关于结果展现

  搜索结果的展现最好直接用搜索的结果来做,不要重新查数据库,再组织结果。

  因为这样即会丢失关键字高亮的信息,效率也不高。

收获园豆:50
xingoo | 小虾三级 |园豆:711 | 2018-01-19 11:27

 感谢,这几天看了很多,大概了解了.  

1, 确定用logstash做数据增量同步.

2, 不需要做高亮(app内搜索展示), 会用id去重新查数据库,然后组装列表数据.

淡丶无欲 | 园豆:87 (初学一级) | 2018-01-21 06:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册