🎨 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:
parent
c511795eb5
commit
34202540e9
1 changed files with 11 additions and 2 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue