58 lines
2.0 KiB
Go
58 lines
2.0 KiB
Go
package document_service
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"github.com/XingfenD/yoresee_doc/internal/config"
|
|
"github.com/XingfenD/yoresee_doc/internal/search"
|
|
internal_dto "github.com/XingfenD/yoresee_doc/internal/service/dto"
|
|
"github.com/XingfenD/yoresee_doc/pkg/storage"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func (s *DocumentService) applyElasticsearchKeywordFilter(ctx context.Context, req *internal_dto.DocumentsListReq) {
|
|
if req == nil || req.FilterArgs == nil || req.FilterArgs.TitleKeyword == nil {
|
|
return
|
|
}
|
|
keyword := strings.TrimSpace(*req.FilterArgs.TitleKeyword)
|
|
if keyword == "" {
|
|
return
|
|
}
|
|
if config.GlobalConfig == nil || !config.GlobalConfig.Elasticsearch.Enabled {
|
|
logrus.Warnf("[Service layer: DocumentService] elasticsearch is disabled, degrade to db keyword search, keyword=%s", keyword)
|
|
return
|
|
}
|
|
if storage.ES == nil {
|
|
logrus.Warnf("[Service layer: DocumentService] elasticsearch client is nil, degrade to db keyword search, keyword=%s", keyword)
|
|
return
|
|
}
|
|
|
|
searchReq := search.DocumentSearchRequest{
|
|
Keyword: keyword,
|
|
DocType: req.FilterArgs.DocType,
|
|
Tags: req.FilterArgs.Tags,
|
|
CreateTimeRangeStart: req.FilterArgs.CreateTimeRangeStart,
|
|
CreateTimeRangeEnd: req.FilterArgs.CreateTimeRangeEnd,
|
|
UpdateTimeRangeStart: req.FilterArgs.UpdateTimeRangeStart,
|
|
UpdateTimeRangeEnd: req.FilterArgs.UpdateTimeRangeEnd,
|
|
Size: 5000,
|
|
ListOwnDoc: req.ListOwnDoc,
|
|
}
|
|
if req.MetaArgs != nil {
|
|
searchReq.UserID = req.MetaArgs.UserID
|
|
searchReq.KnowledgeID = req.MetaArgs.KnowledgeID
|
|
}
|
|
|
|
ids, err := search.SearchDocumentIDs(ctx, searchReq)
|
|
if err != nil {
|
|
logrus.Warnf("[Service layer: DocumentService] elasticsearch keyword search failed, keyword=%s, err=%+v", keyword, err)
|
|
return
|
|
}
|
|
if len(ids) == 0 {
|
|
logrus.Warnf("[Service layer: DocumentService] elasticsearch keyword search no hit, degrade to db keyword search, keyword=%s", keyword)
|
|
return
|
|
}
|
|
req.SearchDocIDs = ids
|
|
}
|