検索アルゴリズム

SearchMatch は、テキストパターンに一致させるためのインターフェースです。一致結果は戻り値 SearchMatchResult にあります。試合結果には、試合の順位と試合の総合スコアに関する情報が含まれています。

実装

FuzzyMatchV2Search

fzf FuzzyMatchV2Search アルゴリズムのポート。高速なあいまい検索を実行し、パスをすばやく見つけるのに適しています。

ExactMatchNaive

fzf ExactMatchNaive アルゴリズムのポート。検索対象がわかっている場合は、単純な完全一致がより正確に機能します。

SearchMatch

アルゴリズムとデフォルトの構文は、パッケージで保護されたクラス内に隠されています。これは、API がより長いサポートに適していることがわかるまで、これらを完全に開きたくないためです。ビルトインビルダーを介して SearchMatch を構築する必要があります。

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

大文字と小文字の区別、検索が行われる方向、検索が行われる前にテキストを正規化する必要があるかどうかを構成することができます。正規化は、異なる言語で同じ種類の文字がわずかに異なる場合に便利です。

検索アルゴリズムは、次の表に示す検索構文に基づいて選択されます。

表 1: 検索構文
トークン マッチ型 説明

hell

fuzzy-match

hello に合うアイテム

'stuff

exact-match

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