MartinLee 发表于 2019-11-17 12:24

Elastic Search + fscrawler 实现文档上传并搜索过滤(简单实现)

本帖最后由 MartinLee 于 2019-11-17 12:25 编辑

需求:实现一个搜索功能,搜索的内容来自上传的文档(MS Office 文档),后期也有上传图片的文字,需要全词匹配搜索高亮,还有根据用户,状态等过滤工具:Elastic Search(后文简称ES)上传文件处理:Fcrawler 先说现有代码逻辑:同事一个PHP项目,现在越做越大,小型OA的感觉了(PHP做到现在吃力啊…),现在客户需要增加一个搜索的需求,就交给我来调研了。我本人是搞.Net的,这俩月在接手一个Ruby项目,还有个C#项目的维护,本来是让我这个月开始一个Java项目的。不提这个了,大概就这样,然后这周末我又来加班了,基本上我这块搞得差不多了,然后来总结一下吧。 文档上传本来PHP那边已经做好了,但是boss说太不稳定了,所以从上传到最后搜索,都重新搞吧。服务器部署是在AWS上,现在AWS支持的ES版本最高是7.1(当前最新版本是7.4.2),我现在本地Windows环境搭建一套 EK(ES + kibana),然后走一下,测试一下可行性。1.    安装包下载(ES一定要与Kibana版本相对应):a)   https://fscrawler.readthedocs.io/en/fscrawler-2.5/installation.htmlb)   https://www.elastic.co/downloads/elasticsearchc)   https://www.elastic.co/downloads/kibanad)   附图:file:///C:/Users/FangYing/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg2.    老版本下载:https://www.elastic.co/downloads/past-releases#kibana3.    本地安装,ES就是傻瓜式安装(.msi),Kibana的话压缩包解压,然后bin\kibana.bata)   附图file:///C:/Users/FangYing/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg4.    安装完成之后浏览器打开a)   附图:file:///C:/Users/FangYing/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg5.    fscrawler:https://fscrawler.readthedocs.io/en/fscrawler-2.5/user/getting_started.html比着来就行6.    比较想说的就是那个添加附加信息(例如是哪个用户上传的),我想的是文档上传放到一个文件夹,附带把附加信息存到另外一个同名的.txt文件,然后fscrawler每隔一段时间便利文件夹时,顺便添加信息(https://fscrawler.readthedocs.io/en/fscrawler-2.5/admin/fs/rest.html#additional-tags)file:///C:/Users/FangYing/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg按照这个来我在本地是不成功的,,可以在file:///C:/Users/FangYing/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg这个地方看log。不成功是因为格式不对,我改成如下:
7.   {8.       "external": {9.         "tenantId": 23,10.       "author": 34,11.       "description": "these are additional tags"12.     }13. }
file:///C:/Users/FangYing/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpgfile:///C:/Users/FangYing/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg external就是我想加进去的file:///C:/Users/FangYing/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg

MartinLee 发表于 2019-11-17 12:27

从word复制过来的,图片复制不过来,自己后期又添加的, 主要是个思路,在一堆代码里加功能,只能以不影响原代码为根本...

梦毁他城 发表于 2019-11-17 13:30

为什么 不用传统的数据库,近实时的搜索,es为什么不能代替关系型数据库

MartinLee 发表于 2019-11-17 18:45

梦毁他城 发表于 2019-11-17 13:30
为什么 不用传统的数据库,近实时的搜索,es为什么不能代替关系型数据库

把 elastic search 当做nosql呗

梦毁他城 发表于 2019-11-17 23:11

MartinLee 发表于 2019-11-17 18:45
把 elastic search 当做nosql呗

可以用es 代替吗

MartinLee 发表于 2019-11-18 12:04

梦毁他城 发表于 2019-11-17 23:11
可以用es 代替吗

分场景吧,像我现在做的功能,用ES代替就ok
页: [1]
查看完整版本: Elastic Search + fscrawler 实现文档上传并搜索过滤(简单实现)