製品検索でタイプミスを検出し、修正の可能性を提案するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/487003

質問

製品名の非常に大規模なデータベースがある場合、ユーザーの検索で起こり得るタイプミスをどのように検出し、修正の可能性を提案しますか (Google がそれらを表示する方法と似ています)。

例えば。

ユーザーは「fork handels」と入力し、「検索」を押します。

彼らは戻ってきます

"結果がありません。「フォークハンドル」のことですか?」

役に立ちましたか?

解決

この問題にはいくつかのアプローチがあります。

  1. テーブルを維持する 最も一般的なスペルミス あなたのデータベースに。よくあるスペルミスが必要な場合は、次のようにします。 ここ)
  2. に基づくアルゴリズムを使用する 距離を編集する:情報理論とコンピューター サイエンスでは、2 つの文字列間の編集距離は、一方をもう一方に変換するのに必要な操作の数です。このメトリクスを定義または計算するには、いくつかの異なるアルゴリズムがあります。読む レーベンシュタイン アルゴリズムに関するウィキペディアの記事 例えば。
  3. 全文検索に Lucene を使用している場合は、 ここに素敵な記事があります これは、「もしかして」機能を実装する方法を示しています。
  4. この機能が単純なスペル修正であると思われる場合は、いくつかの言語での非常に短い実装を次に示します。 スペル修正ツールの書き方

他のヒント

あなたは、このような<のhref = "HTTPなどの音声アルゴリズムを、使用することができます/ /en.wikipedia.org/wiki/Soundex」のrel = "nofollowをnoreferrer">のSoundexは、似た音の一致を見つけることがを。

PostgreSQLが示すドキュメントと fuzzystrmatchするという名前のモジュールを、持っていますSoundex、レーベンシュタイン、Metaphoneの、およびダブルMetaphoneの使用例。

私は、私はGoogleが、彼らは何の結果を得るていないときにユーザが入力し直し何のリストを保持していることを読んで確信しています。あなたは(再入力文字列が同じ文字で始まる場合と言う)、これらの値のマッピングを保つことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top