搜尋演算法

SearchMatch 是一個介面,用於將文字模式進行比對。比對結果位於傳回值 SearchMatchResult 中。比對結果包含關於比對位置和比對整體分數的資訊。

fzf.

實作

FuzzyMatchV2Search

fzf FuzzyMatchV2Search 演算法的移植版本。執行快速模糊搜尋,並且擅長快速尋找路徑。

ExactMatchNaive

fzf ExactMatchNaive 演算法的移植版本。如果您知道要搜尋什麼,簡單的精確比對可以更準確地工作。

SearchMatch

演算法和預設語法隱藏在套件保護的類別中,因為在我們確定 API 可以長期支援之前,我們不希望完全開放這些。您需要透過其內建的建構器來建構 SearchMatch

SearchMatch searchMatch = SearchMatch.builder()
	.caseSensitive(false)
	.normalize(false)
	.forward(true)
	.build();

可以配置大小寫敏感度、搜尋發生的方向,以及是否應在搜尋發生之前正規化文字。當不同語言對於相同類型的字元有輕微變化時,正規化會很方便。

搜尋演算法是根據下表所示的搜尋語法選擇的。

表 1. 搜尋語法
Token 比對類型 描述

hell

模糊比對

比對 hello 的項目

'stuff

精確比對

包含 stuff 的項目

範例

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