mirror of
https://github.com/gotoeasy/glogcenter.git
synced 2025-09-15 12:58:34 +08:00
0.9.0 支持分类(系统)筛选检索
This commit is contained in:
parent
40bec240c7
commit
b03ff7b39a
@ -179,6 +179,11 @@ func main() {
|
|||||||
- [ ] 集群支持动态删减节点(或是页面管理删除)
|
- [ ] 集群支持动态删减节点(或是页面管理删除)
|
||||||
|
|
||||||
|
|
||||||
|
### 版本`0.9.0`
|
||||||
|
|
||||||
|
- [x] 增加分类(系统)检索条件,支持多系统时准确筛选
|
||||||
|
- [x] 修复一些小瑕疵
|
||||||
|
|
||||||
### 版本`0.8.8`
|
### 版本`0.8.8`
|
||||||
|
|
||||||
- [x] 增加时间范围检索条件
|
- [x] 增加时间范围检索条件
|
||||||
|
|||||||
@ -3,7 +3,7 @@ module glc
|
|||||||
go 1.20
|
go 1.20
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gotoeasy/glang v0.0.0-20221215063310-d39cd67685c4
|
github.com/gotoeasy/glang v0.0.0-20230424145432-766531f4dfc6
|
||||||
github.com/syndtr/goleveldb v1.0.0
|
github.com/syndtr/goleveldb v1.0.0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -59,8 +59,8 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
|
|||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/gotoeasy/glang v0.0.0-20221215063310-d39cd67685c4 h1:oPNNL1xjus3RvIln/n3mWG2raL+NciiQRD1+dyZZ0oE=
|
github.com/gotoeasy/glang v0.0.0-20230424145432-766531f4dfc6 h1:BjHTPALXOecu31LReGpv1AR7W1O8f9xnaqjwPfOHLYw=
|
||||||
github.com/gotoeasy/glang v0.0.0-20221215063310-d39cd67685c4/go.mod h1:zRo6xc3N5z/VsPCKHlmEz/Uz9XyiQbV3IAv3xsSTPV8=
|
github.com/gotoeasy/glang v0.0.0-20230424145432-766531f4dfc6/go.mod h1:zRo6xc3N5z/VsPCKHlmEz/Uz9XyiQbV3IAv3xsSTPV8=
|
||||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||||
github.com/huichen/sego v0.0.0-20210824061530-c87651ea5c76 h1:qNQ2+1IQT9Mor/vfEHePOQSbiapLoNI7sQmpxM7l1Ew=
|
github.com/huichen/sego v0.0.0-20210824061530-c87651ea5c76 h1:qNQ2+1IQT9Mor/vfEHePOQSbiapLoNI7sQmpxM7l1Ew=
|
||||||
github.com/huichen/sego v0.0.0-20210824061530-c87651ea5c76/go.mod h1:Fymg8+khR/cKSuIwqRxy/jmZg7PIPLk7CauXzrbcMUM=
|
github.com/huichen/sego v0.0.0-20210824061530-c87651ea5c76/go.mod h1:Fymg8+khR/cKSuIwqRxy/jmZg7PIPLk7CauXzrbcMUM=
|
||||||
|
|||||||
@ -43,7 +43,7 @@ func (e *Engine) AddTextLog(date string, logText string, system string) {
|
|||||||
e.logStorage.AddTextLog(date, logText, system)
|
e.logStorage.AddTextLog(date, logText, system)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Engine) Search(searchKey string, minDatetime string, maxDatetime string, pageSize int, currentDocId uint32, forward bool) *search.SearchResult {
|
func (e *Engine) Search(searchKey string, system string, minDatetime string, maxDatetime string, pageSize int, currentDocId uint32, forward bool) *search.SearchResult {
|
||||||
|
|
||||||
// 检查修正pageSize
|
// 检查修正pageSize
|
||||||
if pageSize < 1 {
|
if pageSize < 1 {
|
||||||
@ -54,7 +54,9 @@ func (e *Engine) Search(searchKey string, minDatetime string, maxDatetime string
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 分词后检索
|
// 分词后检索
|
||||||
kws := tokenizer.CutForSearch(searchKey) // TODO 检索用关键词处理
|
var adds []string
|
||||||
|
adds = append(adds, system)
|
||||||
|
kws := tokenizer.CutForSearchEx(searchKey, adds, nil) // 检索用关键词处理
|
||||||
|
|
||||||
if searchKey == "" {
|
if searchKey == "" {
|
||||||
cmn.Debug("无条件查询", "currentDocId =", currentDocId)
|
cmn.Debug("无条件查询", "currentDocId =", currentDocId)
|
||||||
|
|||||||
@ -46,7 +46,7 @@ func Test_all(t *testing.T) {
|
|||||||
// }
|
// }
|
||||||
// time.Sleep(time.Duration(5) * time.Second)
|
// time.Sleep(time.Duration(5) * time.Second)
|
||||||
|
|
||||||
rs := engine.Search(` them java `, "", "", 5, 0, true)
|
rs := engine.Search(` them java `, "", "", "", 5, 0, true)
|
||||||
cmn.Println("共查到", rs.Total, "件")
|
cmn.Println("共查到", rs.Total, "件")
|
||||||
for _, v := range rs.Data {
|
for _, v := range rs.Data {
|
||||||
cmn.Println(v.Id, v.Text)
|
cmn.Println(v.Id, v.Text)
|
||||||
|
|||||||
@ -16,13 +16,14 @@ import (
|
|||||||
type LogDataModel struct {
|
type LogDataModel struct {
|
||||||
Id string `json:"id,omitempty"` // 从1开始递增(36进制字符串)
|
Id string `json:"id,omitempty"` // 从1开始递增(36进制字符串)
|
||||||
Text string `json:"text,omitempty"` // 【必须】日志内容,多行时仅为首行,直接显示用,是全文检索对象
|
Text string `json:"text,omitempty"` // 【必须】日志内容,多行时仅为首行,直接显示用,是全文检索对象
|
||||||
Detail string `json:"detail,omitempty"` // 多行时的详细日志信息,通常是包含错误堆栈等的日志内容
|
Detail string `json:"detail,omitempty"` // 多行时的详细日志信息,通常是包含错误堆栈等的日志内容(这部分内容不做索引处理)
|
||||||
Date string `json:"date,omitempty"` // 日期(格式自定义)
|
Date string `json:"date,omitempty"` // 日期(格式YYYY/MM/DD HH:MM:SS.SSS)
|
||||||
Tags []string `json:"tags,omitempty"` // 自定义标签,都作为关键词看待处理
|
Tags []string `json:"tags,omitempty"` // 自定义标签,都作为关键词看待处理
|
||||||
Server string `json:"server,omitempty"` // 服务器
|
Server string `json:"server,omitempty"` // 服务器
|
||||||
Client string `json:"client,omitempty"` // 客户端
|
Client string `json:"client,omitempty"` // 客户端
|
||||||
User string `json:"user,omitempty"` // 用户
|
User string `json:"user,omitempty"` // 用户
|
||||||
System string `json:"system,omitempty"` // 所属系统
|
System string `json:"system,omitempty"` // 所属系统
|
||||||
|
LogType string `json:"logtype,omitempty"` // 日志类型(如登录日志、操作日志)
|
||||||
TraceId string `json:"traceid,omitempty"` // 跟踪ID
|
TraceId string `json:"traceid,omitempty"` // 跟踪ID
|
||||||
Keywords []string `json:"keywords,omitempty"` // 自定义的关键词
|
Keywords []string `json:"keywords,omitempty"` // 自定义的关键词
|
||||||
Sensitives []string `json:"sensitives,omitempty"` // 要删除的敏感词
|
Sensitives []string `json:"sensitives,omitempty"` // 要删除的敏感词
|
||||||
|
|||||||
@ -182,8 +182,8 @@ func (s *LogDataStorage) createInvertedIndex() int {
|
|||||||
// 整理关键词
|
// 整理关键词
|
||||||
adds := docm.Keywords
|
adds := docm.Keywords
|
||||||
adds = append(adds, docm.Tags...)
|
adds = append(adds, docm.Tags...)
|
||||||
adds = append(adds, docm.Client, docm.Server, docm.System, docm.User)
|
adds = append(adds, docm.Client, docm.Server, "~"+docm.System, docm.User) // 特殊处理system
|
||||||
kws := tokenizer.CutForSearchEx(docm.Text, adds, docm.Sensitives) // 两数组参数的元素可以重复或空白,会被判断整理
|
kws := tokenizer.CutForSearchEx(docm.Text+" "+docm.System, adds, docm.Sensitives) // 两数组参数的元素可以重复或空白,会被判断整理
|
||||||
|
|
||||||
// 每个关键词都创建反向索引
|
// 每个关键词都创建反向索引
|
||||||
for _, word := range kws {
|
for _, word := range kws {
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
package onstart
|
package onstart
|
||||||
|
|
||||||
const VERSION = "glogcenter 0.8.8"
|
const VERSION = "glogcenter 0.9.0"
|
||||||
|
|||||||
@ -23,8 +23,13 @@ func LogSearchController(req *gweb.HttpRequest) *gweb.HttpResult {
|
|||||||
forward := cmn.StringToBool(req.GetFormParameter("forward"), true)
|
forward := cmn.StringToBool(req.GetFormParameter("forward"), true)
|
||||||
datetimeFrom := req.GetFormParameter("datetimeFrom")
|
datetimeFrom := req.GetFormParameter("datetimeFrom")
|
||||||
datetimeTo := req.GetFormParameter("datetimeTo")
|
datetimeTo := req.GetFormParameter("datetimeTo")
|
||||||
|
system := req.GetFormParameter("system")
|
||||||
|
|
||||||
|
if !cmn.IsBlank(system) {
|
||||||
|
system = "~" + cmn.Trim(system)
|
||||||
|
}
|
||||||
|
|
||||||
eng := ldb.NewEngine(storeName)
|
eng := ldb.NewEngine(storeName)
|
||||||
rs := eng.Search(searchKey, datetimeFrom, datetimeTo, pageSize, currentId, forward)
|
rs := eng.Search(searchKey, system, datetimeFrom, datetimeTo, pageSize, currentId, forward)
|
||||||
return gweb.Result(rs)
|
return gweb.Result(rs)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,6 +52,11 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-form-item label="分类名称">
|
||||||
|
<el-input v-model="params.system" placeholder="请输入分类名" style="width:420px;"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-form-item label="时间范围">
|
<el-form-item label="时间范围">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@ -145,6 +150,7 @@ export default {
|
|||||||
params: {
|
params: {
|
||||||
storeName: '',
|
storeName: '',
|
||||||
searchKey: '',
|
searchKey: '',
|
||||||
|
system: '',
|
||||||
datetime: null,
|
datetime: null,
|
||||||
pageSize: 100,
|
pageSize: 100,
|
||||||
currentId: '',
|
currentId: '',
|
||||||
@ -277,12 +283,13 @@ export default {
|
|||||||
},
|
},
|
||||||
computed:{
|
computed:{
|
||||||
hasMoreCondition(){
|
hasMoreCondition(){
|
||||||
return !this.params.datetime && !this.storage;
|
return !this.params.datetime && !this.storage && !this.params.system;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
fnResetSearchForm(){
|
fnResetSearchForm(){
|
||||||
this.params.searchKey = '';
|
this.params.searchKey = '';
|
||||||
|
this.params.system = '';
|
||||||
this.params.datetime = null;
|
this.params.datetime = null;
|
||||||
this.storage = '';
|
this.storage = '';
|
||||||
this.search();
|
this.search();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user