mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-19 16:10:12 +01:00
🐛 表格块过大时搜索无法高亮并定位匹配的关键字 Fix https://github.com/siyuan-note/siyuan/issues/6103
This commit is contained in:
parent
72a9aa10d4
commit
3a1d8de0a3
2 changed files with 23 additions and 3 deletions
|
|
@ -452,9 +452,6 @@ func query2Stmt(queryStr string) (ret string) {
|
||||||
func markSearch(text string, keyword string, beforeLen int) (marked string, score float64) {
|
func markSearch(text string, keyword string, beforeLen int) (marked string, score float64) {
|
||||||
if 0 == len(keyword) {
|
if 0 == len(keyword) {
|
||||||
marked = text
|
marked = text
|
||||||
if maxLen := 5120; maxLen < utf8.RuneCountInString(marked) {
|
|
||||||
marked = gulu.Str.SubStr(marked, maxLen) + "..."
|
|
||||||
}
|
|
||||||
|
|
||||||
if strings.Contains(marked, search.SearchMarkLeft) { // 使用 FTS snippet() 处理过高亮片段,这里简单替换后就返回
|
if strings.Contains(marked, search.SearchMarkLeft) { // 使用 FTS snippet() 处理过高亮片段,这里简单替换后就返回
|
||||||
marked = html.EscapeString(text)
|
marked = html.EscapeString(text)
|
||||||
|
|
@ -550,6 +547,21 @@ func fromSQLBlock(sqlBlock *sql.Block, terms string, beforeLen int) (block *Bloc
|
||||||
}
|
}
|
||||||
|
|
||||||
func maxContent(content string, maxLen int) string {
|
func maxContent(content string, maxLen int) string {
|
||||||
|
idx := strings.Index(content, "<mark>")
|
||||||
|
if 128 < maxLen && maxLen <= idx {
|
||||||
|
head := bytes.Buffer{}
|
||||||
|
for i := 0; i < 512; i++ {
|
||||||
|
r, size := utf8.DecodeLastRuneInString(content[:idx])
|
||||||
|
head.WriteRune(r)
|
||||||
|
idx -= size
|
||||||
|
if 64 < head.Len() {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
content = util.Reverse(head.String()) + content[idx:]
|
||||||
|
}
|
||||||
|
|
||||||
if maxLen < utf8.RuneCountInString(content) {
|
if maxLen < utf8.RuneCountInString(content) {
|
||||||
return gulu.Str.SubStr(content, maxLen) + "..."
|
return gulu.Str.SubStr(content, maxLen) + "..."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,3 +15,11 @@
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
package util
|
package util
|
||||||
|
|
||||||
|
func Reverse(s string) string {
|
||||||
|
runes := []rune(s)
|
||||||
|
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
|
||||||
|
runes[i], runes[j] = runes[j], runes[i]
|
||||||
|
}
|
||||||
|
return string(runes)
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue