🎨 The keyword search logic in-database is changed from OR to AND https://github.com/siyuan-note/siyuan/issues/11535

This commit is contained in:
Daniel 2024-05-26 19:48:57 +08:00
parent c511795eb5
commit 34202540e9
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -321,17 +321,26 @@ func RenderAttributeViewTable(attrView *av.AttributeView, view *av.View, query s
// 根据搜索条件过滤
query = strings.TrimSpace(query)
if "" != query {
// 将连续空格转换为一个空格
query = strings.Join(strings.Fields(query), " ")
// 按空格分割关键字
keywords := strings.Split(query, " ")
// 使用 AND 逻辑 https://github.com/siyuan-note/siyuan/issues/11535
var hitRows []*av.TableRow
for _, row := range ret.Rows {
hit := false
for _, cell := range row.Cells {
allKeywordsHit := true
for _, keyword := range keywords {
if strings.Contains(strings.ToLower(cell.Value.String(true)), strings.ToLower(keyword)) {
hit = true
if !strings.Contains(strings.ToLower(cell.Value.String(true)), strings.ToLower(keyword)) {
allKeywordsHit = false
break
}
}
if allKeywordsHit {
hit = true
break
}
}
if hit {
hitRows = append(hitRows, row)