1

ケースで困っています。ユーザーがスペルミスをした場合に mysql データベースを検索し、「Did You Mean something」のような結果を返す検索を実行したいと考えています。レーベンシュタイン法を実行しましたが、期待した結果が返されません。たとえば、「リンゴ」、「豆」、「チキンスープ」などの項目の配列で「チキン」を検索するとします。それは私に bean を返します。これを解決するより良い方法はありますか?この機能を実現するために PHP MYSQL を使用しています。

どんな助けでも大歓迎です。

4

3 に答える 3

0

MySQL の全文検索をお勧めします。詳細については、こちらをご覧ください。

使用したい構文はMATCH() ... AGAINST. 必ず MyISAM タイプのテーブルを使用し、検索するフィールドにインデックスを作成してください。

お役に立てれば、

ブラム

于 2012-07-24T13:08:45.293 に答える
0

「似た発音で同じsoundexキーを生成する」という発音に基づいたSoundexを使用できます。

より良い結果を得るには、最初に最小距離 (たとえば 2 または 3) の単語のセットを取得し、フィルター処理された単語のセットに soundex を適用して、提案された単語を取得します。私は過去のプロジェクトの1つに実装しましたが、非常にうまく機能します。

于 2012-07-24T12:57:49.203 に答える
0

レーベンスタイン距離でうまくいくはずですが、similar_text()またはsoundex().

similar_text一致間の類似度のパーセンテージを返すことができるため、似たようなものに使用しました。

于 2012-07-24T12:30:55.900 に答える