搜尋演算法
SearchMatch
是一個介面,用於將文字與模式進行比對。比對結果位於傳回值 SearchMatchResult
中。比對結果包含關於比對位置和比對整體分數的資訊。
fzf.
實作
FuzzyMatchV2Search
fzf FuzzyMatchV2Search 演算法的移植版本。執行快速模糊搜尋,並且擅長快速尋找路徑。
ExactMatchNaive
fzf ExactMatchNaive 演算法的移植版本。如果您知道要搜尋什麼,簡單的精確比對可以更準確地工作。
SearchMatch
演算法和預設語法隱藏在套件保護的類別中,因為在我們確定 API 可以長期支援之前,我們不希望完全開放這些。您需要透過其內建的建構器來建構 SearchMatch
。
SearchMatch searchMatch = SearchMatch.builder()
.caseSensitive(false)
.normalize(false)
.forward(true)
.build();
可以配置大小寫敏感度、搜尋發生的方向,以及是否應在搜尋發生之前正規化文字。當不同語言對於相同類型的字元有輕微變化時,正規化會很方便。
搜尋演算法是根據下表所示的搜尋語法選擇的。
Token | 比對類型 | 描述 |
---|---|---|
|
模糊比對 |
比對 |
|
精確比對 |
包含 |
範例
SearchMatch searchMatch = SearchMatch.builder()
.caseSensitive(false)
.normalize(false)
.forward(true)
.build();
SearchMatchResult result = searchMatch.match("foo bar baz", "fbb");
result.getStart();
// 0 - start position inclusive
result.getEnd();
// 9 - end position exclusive
result.getPositions();
// 0,4,8 - positions, inclusive
result.getScore();
// 112 - score
result.getAlgorithm();
// FuzzyMatchV2SearchMatchAlgorithm - resolved algo