From f598e57984aa3809b479677f0a97765ed25766d7 Mon Sep 17 00:00:00 2001 From: PaienNate <68044286+PaienNate@users.noreply.github.com> Date: Sun, 2 Feb 2025 21:16:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=AD=A3UI=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=B8=AE=E5=8A=A9=E6=96=87=E6=A1=A3=E6=97=B6=E6=A8=A1=E7=B3=8A?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E6=90=9C=E7=B4=A2=E9=83=A8=E5=88=86=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98=20(#1200)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dice/docengine/bleve.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dice/docengine/bleve.go b/dice/docengine/bleve.go index 492f9f0c..54d46b96 100644 --- a/dice/docengine/bleve.go +++ b/dice/docengine/bleve.go @@ -58,7 +58,11 @@ func (d *BleveSearchEngine) Init() error { docMapping := bleve.NewDocumentMapping() contentFieldMapping := bleve.NewTextFieldMapping() keywordMapping := bleve.NewKeywordFieldMapping() - // 注意: 这里group,from,title,package都是keywordMapping,这样就能进行精确搜索。 + // 注意: 这里group,from,package都是keywordMapping + // 琢磨了一下,title还要做分词匹配,这个不能是keywordMapping + // 下面这些GPT说的,如果不对,随便改。 + // 不需要分词,只需要支持模糊匹配(类似 SQL 中的 LIKE),那么 keyword 类型的字段 是最合适的选择。 + // keyword 类型的字段会将整个字段值作为一个整体存储,适合精确匹配和通配符匹配(如 NewWildcardQuery)。 docMapping.AddFieldMappingsAt("group", keywordMapping) docMapping.AddFieldMappingsAt("from", keywordMapping) docMapping.AddFieldMappingsAt("title", contentFieldMapping) @@ -207,17 +211,17 @@ func (d *BleveSearchEngine) PaginateDocuments(pageSize, pageNum int, group, from // 只有Keyword才支持NewTermQuery conjunctionQuery := bleve.NewConjunctionQuery() if group != "" { - groupQuery := bleve.NewTermQuery(group) + groupQuery := bleve.NewWildcardQuery(fmt.Sprintf("*%s*", group)) groupQuery.SetField("group") conjunctionQuery.AddQuery(groupQuery) } if from != "" { - fromQuery := bleve.NewTermQuery(from) + fromQuery := bleve.NewWildcardQuery(fmt.Sprintf("*%s*", from)) fromQuery.SetField("from") conjunctionQuery.AddQuery(fromQuery) } if title != "" { - titleQuery := bleve.NewTermQuery(title) + titleQuery := bleve.NewWildcardQuery(fmt.Sprintf("*%s*", title)) titleQuery.SetField("title") conjunctionQuery.AddQuery(titleQuery) }