This commit is contained in:
gotoeasy 2024-04-08 09:26:17 +08:00
parent c05556d41c
commit 86567c8070
3 changed files with 59 additions and 44 deletions

View File

@ -53,6 +53,7 @@ var enableUploadMinio bool
var goMaxProcess int
var enableCors bool
var pageSize int
var nearSearchSize int
var mulitLineSearch bool
var testMode bool
var tokenSalt string
@ -100,10 +101,16 @@ func UpdateConfigByEnv() {
goMaxProcess = getGoMaxProcessConf(cmn.GetEnvInt("GLC_GOMAXPROCS", -1)) // 使用的最大CPU数量默认是最大CPU数量设定值不在实际数量范围是按最大看待
enableCors = cmn.GetEnvBool("GLC_ENABLE_CORS", false) // 是否允许跨域默认false
pageSize = getPageSizeConf(cmn.GetEnvInt("GLC_PAGE_SIZE", 100)) // 每次检索件数默认100有效范围1~1000
nearSearchSize = getNearSearchSizeConf(cmn.GetEnvInt("GLC_NEAR_SEARCH_SIZE", 200)) // 定位相邻检索的查询件数默认200有效范围50~1000
mulitLineSearch = cmn.GetEnvBool("GLC_SEARCH_MULIT_LINE", false) // 是否检索日志的全部行日志可能有换行默认false仅第一行
testMode = cmn.GetEnvBool("GLC_TEST_MODE", false) // 是否测试模式默认false
}
// 取配置: 定位相邻检索的查询件数可通过环境变量“GLC_NEAR_SEARCH_SIZE”设定默认200件
func GetNearSearchSize() int {
return nearSearchSize
}
// 取配置: IP是否要自动附加城市信息默认false
func IsIpAddCity() bool {
return ipAddCity
@ -143,6 +150,15 @@ func IsMulitLineSearch() bool {
func GetPageSize() int {
return pageSize
}
func getNearSearchSizeConf(n int) int {
if n < 50 {
n = 50
}
if n > 1000 {
n = 1000
}
return n
}
func getPageSizeConf(n int) int {
if n < 1 {
n = 1

View File

@ -155,19 +155,18 @@ func (e *Engine) Search(cond *search.SearchCondition) *search.SearchResult {
// 多关键词查询模式
if cond.NewNearId > 0 {
// 相邻检索模式的判断及条件准备
max := conf.GetPageSize()
leftSize := 20
max := conf.GetNearSearchSize()
cond.CurrentId = cond.NewNearId
isForward := cond.OldNearId < 1 || cond.NewNearId < cond.OldNearId // 是否向下检索更多的旧日志
// 搜索更多的新数据
// 反向检索前x条
cond.Forward = false
if isForward {
cond.SearchSize = leftSize
} else {
cond.SearchSize = max - leftSize
leftSize := 20
if !isForward {
leftSize = max - leftSize
}
cond.Forward = false
cond.SearchSize = leftSize
rs = search.SearchWordIndex(e.storeName, cond)
// 定位日志1条固定不管是否满足检索条件
ldm := search.GetLogDataModelById(cond.NearStoreName, cond.NewNearId)

View File

@ -364,7 +364,7 @@ func findSame(cond *SearchCondition, minDocumentId uint32, maxDocumentId uint32,
// 简单检查排除没结果的情景
totalCount := minIdx.idxwordStorage.GetTotalCount(minIdx.word)
if totalCount == 0 || (totalCount == 1 && cond.CurrentId > 0) {
if totalCount == 0 || (cond.NewNearId == 0 && totalCount == 1 && cond.CurrentId > 0) {
return rs // 索引件数0、或只有1条又还要跳过都是找不到
}