バイナリ検索を使用して部分一致を行う方法を検討しています。これが私のコードです:
public void checkCardIndexForMatches(List<String> wordsToCheck) throws IOException {
String[] cardIndexCache = cardIndexCreator.getCardIndexCache();
for (String text: wordsToCheck){
int i = Arrays.binarySearch(cardIndexCache, text.getText().toLowerCase().trim());
if (i > 0){
text.setCardIndexMatch(true);
}
//check if partial match
// else if
}
}
これまでのところ、非常に単純なことです。基本的には、フィードされる外部ファイルがあり、ファイルの各行は cardIndexCache に配列として格納されます。問題は、ユーザーが配列内の「フレーズ」に一致できるようにしたい場合に発生します (フレーズは複数の単語であるモハメド・アリなど)。wordsToCheck パラメーター内の単語は、個々の単語としてのみ渡されます。したがって、最初の単語は Mohammed になりますが、2 番目の単語がわからないため、バイナリ検索は失敗します。単語が一致する可能性があることをバイナリ検索で示す簡単な方法は考えられません (最初の部分が一致し、次の単語を追加して一致するかどうかを確認します)。
どんなアイデアでも大歓迎です!