検索アルゴリズム
SearchMatch
は、テキストをパターンに一致させるためのインターフェースです。一致結果は戻り値 SearchMatchResult
にあります。試合結果には、試合の順位と試合の総合スコアに関する情報が含まれています。
実装
FuzzyMatchV2Search
fzf FuzzyMatchV2Search アルゴリズムのポート。高速なあいまい検索を実行し、パスをすばやく見つけるのに適しています。
ExactMatchNaive
fzf ExactMatchNaive アルゴリズムのポート。検索対象がわかっている場合は、単純な完全一致がより正確に機能します。
SearchMatch
アルゴリズムとデフォルトの構文は、パッケージで保護されたクラス内に隠されています。これは、API がより長いサポートに適していることがわかるまで、これらを完全に開きたくないためです。ビルトインビルダーを介して SearchMatch
を構築する必要があります。
SearchMatch searchMatch = SearchMatch.builder()
.caseSensitive(false)
.normalize(false)
.forward(true)
.build();
大文字と小文字の区別、検索が行われる方向、検索が行われる前にテキストを正規化する必要があるかどうかを構成することができます。正規化は、異なる言語で同じ種類の文字がわずかに異なる場合に便利です。
検索アルゴリズムは、次の表に示す検索構文に基づいて選択されます。
トークン | マッチ型 | 説明 |
---|---|---|
| fuzzy-match |
|
| exact-match |
|
サンプル
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