平时接触的文档较多,找起来也不是方便,有时想不起来。决定结合ES,Gin,Vue,搞个文档搜索。方便自己查找文档。
目前支持的文件格式为,docx,pdf,txt,md.
文件存储方式,file(本地),ftp。
INDEX: file_search
Document: _doc
es字段 | 字段类型 | 说明 |
---|---|---|
id | text | 文件sha256值 [记录唯一值] |
content | text | 文件内容 [加入中文搜索] |
url | text | 文件URI[加入中文搜索] |
click_count | int | 搜索内容点击次数 |
create_at | date | 记录创建时间 |
file_name | text | 文件名 |
DB: file_search
table : file_spider
字段 | 字段类型 | 说明 |
---|---|---|
id | varchar(32) | uuid |
type | varchar(32) | 文件类型,ftp,file |
folder | text | 爬虫目录 |
username | varchar(64) | 用户名 |
password | varchar(64) | 密码 |
create_at | date | 记录创建时间 |
enable | int | 是否启用 (未实现) |
regular | text | 文件名匹配正则表达式 |
timing | int | 启用后间隔天数执行(未实现) |
last_running_time | date | 上次执行时间 |
size_limit | int | 文件大小限制 |
process_size | int | 同时处理的协程 |
sudo docker run -p 3306:3306 -v /Users/zhangmike/Documents/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
create database file_search charset=utf8;
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.4.2
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d docker.elastic.co/elasticsearch/elasticsearch:7.4.2
docker exec -it [容器Id] /bin/sh
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.4.2/elasticsearch-analysis-pinyin-7.4.2.zip
docker commit [容器Id] elasticsearch-ik-pinyin:7.4.2
sudo docker run -p 9200:9200 -p 9300:9300 -v /Users/zhangmike/Documents/data/es:/usr/share/elasticsearch/data -e "discovery.type=single-node" -d elasticsearch-ik-pinyin:7.4.2
curl 'http://localhost:9200/file_search' -H "Content-Type: application/json" -X PUT --data '{"settings":{"analysis":{"analyzer":{"ik_max_word_without_html":{"tokenizer":"ik_max_word","char_filter":["html_strip"]}}}},"mappings":{"properties":{"url":{"type":"text","analyzer":"ik_max_word_without_html"},"content":{"type":"text","analyzer":"ik_max_word_without_html"},"file_name":{"type":"text","index":false},"id":{"type":"text","index":false},"click_count":{"type":"integer"},"create_at":{"type":"date","format":"yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"}}}}'
cd web/filesearch
//还需要elementui
npm install
npm run build
MYSQL_USER=root MYSQL_PASSWORD=123456 MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_DBNAME=file_search go run main.go
//浏览器打开
//添加任务
http://localhost:8090/web/#/admin
//搜索
http://localhost:8090/web/#/
文件目录修改,文档sha256值不变,不会重新提交ES,建议重新清除ES Index
url:/admin/task/create
method:Post
format:Json
param:
{
type:'file',//文件类型目前只支持file,ftp
folder:'',//文件目录
userName:'',
password:'',
enable:1|0,//是否启动定时(未实现)
regular:''//文件匹配正则表达式
timing:1//定时启动(未实现)
sizeLimit:1024//文件大小限制,字节
processSize:10//协程处理大小
}
response:
{
code:'',
msg:'',
}
url: /admin/task/exec
method:Post
format:Json
param:
{
id: "id"
}
response:
{
code:'',
msg:'',
}
url: /admin/task/list
method:Post
format:Json
param:
{
pageIndex: 0
}
response:
{
code:'',
msg:'',
index:0,
total:10,
count:10,
data:[{
id:'id'
type:'file',//文件类型目前只支持file
folder:'',//文件目录
userName:'',
password:'',
enable:1|0,//是否启动定时(未实现)
regular:''//文件匹配正则表达式
createAt:'',
lastRunningTime: '',
timing:''//定时启动(未实现)
sizeLimit:1024//文件大小限制,字节
processSize:10//协程处理大小
}]
}
url: /admin/task/delete
method:Post
format:Json
param:
{
id: "id"
}
response:
{
code:'',
msg:'',
}
url:/search/doc
method:Post
format:Json
param:
{
keyword: 'keyword',
pageIndex: '0'
}
response:
{
code:'',
msg:'',
index:0,
total:10,
count:10,
data:[
{
'id':'',
'name': '',
'createAt': '',
'desc': [‘’,''],
'url': '',
}
]
}
- 后台日志管理
- 后台管理登录
- 后台用户管理
- SVN,WINODWS共享文件
- 定时任务
- 支持更多文档格式