1

JavaScript を使用した基本的な検索機能を探しています。

シナリオ: ユーザーは 1 つまたは複数の単語を入力し、ボタンを押します。JavaScript は、入力された検索文に関連すると思われる項目を文字列の配列で検索します。

私が今知っている唯一の関数は、検索している文字列の位置を返す「string.search」です。これは良いことですが、すべての場合に当てはまるわけではありません。検索機能がカバーする必要があるいくつかの例を次に示します

配列に「This is a good day」という文字列があるとします。私の検索機能に対してテストすると、次の検索用語は true を返すはずです。

  • 検索語句 1: 今日はいい日
  • 検索語句 2: この日
  • 検索語 3: これは良かった
  • 検索語 4: good dy -ユーザーが入力ミスをした-

したがって、特定または具体的なものは何もありません。検索語がテストされた配列内の文字列に関連するかどうかを (低レベルで、言語にとらわれずに) 予測する基本的な検索機能です。

4

3 に答える 3

2

最後の「日」のタイプミスですか?

そうでない場合は、split() 関数を使用して元の文字列だけでなく、検索文も単純に分割できます。

次に、検索語を繰り返し処理し、それぞれがソース文字列に表示されることを確認します。単語が見つからないとすぐに、検索を停止します。

これは、すべての検索語を OR ではなく AND にする必要があることを前提としています。

それは役に立ちますか?

于 2012-06-16T23:17:54.110 に答える
1

あなたが探しているのは、有限状態オートマトンのような (FSA) 検索に似たパターン マッチング ベースのライブ検索だと思います。

このリンクは、大文字と小文字を区別せずに検索できる例を示しています。

例: 配列に「This is a good day」が含まれています

次のいずれか (またはすべて) の検索が有効です。

  • この日
  • Thagd (今日良い です)
  • good dy -意図的なタイプミス-

大文字と小文字を区別する (完全な FSA ベースではありませんが) バージョンは、ここにあります。John Resig によるものもありますが、彼のデモへのリンクはありませんが、一見の価値があります。私が言及した最初のリンク。

お役に立てれば!

于 2012-06-17T04:15:38.880 に答える
1

これは、人が考えるほど単純ではありません。あいまい一致とレーベンシュタイン距離/アルゴリズムについて話しています。

この過去の質問を参照してください: 最も近い文字列の一致を取得する

于 2012-06-16T23:27:39.463 に答える