⚡ 使用 AC 算法优化虚拟引用匹配性能
This commit is contained in:
parent
5f72a7b2cd
commit
72631ad0e9
3 changed files with 8 additions and 4 deletions
|
@ -59,6 +59,7 @@ require (
|
|||
require (
|
||||
dmitri.shuralyov.com/font/woff2 v0.0.0-20180220214647-957792cbbdab // indirect
|
||||
github.com/BobuSumisu/aho-corasick v1.0.3 // indirect
|
||||
github.com/ClarkThan/ahocorasick v0.0.0-20230216061320-bccdb98581a3 // indirect
|
||||
github.com/Masterminds/goutils v1.1.1 // indirect
|
||||
github.com/Masterminds/semver/v3 v3.2.0 // indirect
|
||||
github.com/alecthomas/chroma v0.10.0 // indirect
|
||||
|
|
|
@ -19,6 +19,8 @@ github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1/go.mod h1:U
|
|||
github.com/BobuSumisu/aho-corasick v1.0.3 h1:uuf+JHwU9CHP2Vx+wAy6jcksJThhJS9ehR8a+4nPE9g=
|
||||
github.com/BobuSumisu/aho-corasick v1.0.3/go.mod h1:hm4jLcvZKI2vRF2WDU1N4p/jpWtpOzp3nLmi9AzX/XE=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/ClarkThan/ahocorasick v0.0.0-20230216061320-bccdb98581a3 h1:JsUUbdK1JdhsJt2ebcQFFfeO3jpzh6Vv7pmCph6qeik=
|
||||
github.com/ClarkThan/ahocorasick v0.0.0-20230216061320-bccdb98581a3/go.mod h1:a3CzWIqeRxiODAscAIfZ4wbFRXxywBrdCwTENVAWB2g=
|
||||
github.com/ConradIrwin/font v0.0.0-20210318200717-ce8d41cc0732 h1:0EDePskeF4vNFCk70ATaFHQzjmwXsk+VImnMJttecNU=
|
||||
github.com/ConradIrwin/font v0.0.0-20210318200717-ce8d41cc0732/go.mod h1:krTLO7JWu6g8RMxG8sl+T1Hf8W93XQacBKJmqFZ2MFY=
|
||||
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
|
||||
|
|
|
@ -27,7 +27,7 @@ import (
|
|||
"github.com/88250/lute"
|
||||
"github.com/88250/lute/ast"
|
||||
"github.com/88250/lute/parse"
|
||||
ahocorasick "github.com/BobuSumisu/aho-corasick"
|
||||
ahocorasick "github.com/ClarkThan/ahocorasick"
|
||||
"github.com/dgraph-io/ristretto"
|
||||
"github.com/siyuan-note/siyuan/kernel/search"
|
||||
"github.com/siyuan-note/siyuan/kernel/sql"
|
||||
|
@ -82,10 +82,11 @@ func putBlockVirtualRefKeywords(blockContent, blockID, docTitle string) (ret []s
|
|||
}
|
||||
}
|
||||
|
||||
trie := ahocorasick.NewTrieBuilder().AddStrings(keywordsTmp).Build()
|
||||
hits := trie.MatchString(contentTmp)
|
||||
m := ahocorasick.NewMatcher()
|
||||
m.BuildWithPatterns(keywordsTmp)
|
||||
hits := m.Search(contentTmp)
|
||||
for _, hit := range hits {
|
||||
ret = append(ret, hit.MatchString())
|
||||
ret = append(ret, hit)
|
||||
}
|
||||
|
||||
if 1 > len(ret) {
|
||||
|
|
Loading…
Add table
Reference in a new issue