問題タブ [soundex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database-design - soundexベースの検索を設計するための最良の方法
フォーラムの投稿の表がありますが、英語を母国語としない世界中のユーザーが多く、スペルが間違っていると結果を見つけるのに苦労するため、基本的な検索機能を改善したいと考えています。現在のフォーラム検索は正確です。
これらのデザインのどれが最高のパフォーマンスを発揮しますか?データベースに500,000レコードがあり、検索が頻繁に使用されると想定します。理想的には、すべてのレコードを検索したいと思います。
デザインワン
各フォーラム投稿と一緒に、すべてのsoundexデータを含むsoundex_postを保存します。検索が実行されると、すべての検索用語がsoundexeされ、soundexフィールドに対してLIKE操作が実行されます。
デザイン2
正規化します。すべてのsoundexコードは、新しいテーブルtblSoundexCodesに保存されます。次に、テーブルtblForumPostSoundexCodesがあります。
ID | Post_ID | SoundexCode_ID | カウント
次に、soundexが検索されたら、SoundexCode_ID= nであるすべてのPost_IDを単純に引き出します。
方法2はかなり高速になりますが、維持するのがはるかに難しくなることを修正しますか(つまり、人々が投稿を編集する場合)。
mongodb - MongoDB は soundex またはファジー マッチングをサポートしていますか?
MongoDB は soundex またはファジー マッチングをサポートしていますか? 基本的な連絡先名と住所フィールドの重複を見つけたい。公式の C# ドライバーを使用しています。ありがとう
ms-access - MS Access2003SoundExを使用してフォームから検索する
家系の名前で検索するときに、データベースで「あいまい一致」を検索するために検索を取得する必要があります。以下の関数を実装して、問題のないSoundEx関数を有効にしました。
その場でSoundEx関数を呼び出してデータベースを検索するSQLを構築する際に、問題が発生します。VBA関数はSQLステートメントで呼び出すことができますが、正しく機能していないようです。
フォームに文字列を入力してボタンをクリックすると、ステップスルーし、SQLが構築された時点で、検索ボックスにテキストのSoundEx出力とデータ用の別のボックスを含むコマンドウィンドウが表示されます。エントリ。
しばらくこれをいじっていて、役立つ例を見つけることができないようです。
unicode - 異なる言語の短い文字列を比較して、類似した音を探します-Soundexが答えですか?
ある言語で書かれた文字列と別の言語の別の文字列の音の類似性「評価」を取得するにはどうすればよいですか。つまり、それを識別するアルゴリズムです。
「DavidLetterman 」と「דודלטרמן」は同じように聞こえる弦です。
-ああ、そうです、ところで、上記はヘブライ語です、あなたはそれを推測しました:「デビッドレターマン」、そしてそれは英語とほとんど同じように聞こえます/話されます。
私が持っている唯一の原材料は、それぞれの言語のUnicodeの文字列です。つまり、文字列の音素または発音表記/翻訳はありません。
私はすでにSoundexの実装を少し調整して実装しましたが、これはまあまあ機能します。これは行く方法ですか?
php - 2つのテーブルをSOUNDEXと比較しようとしています
誰かがSOUNDEX(mysql / php)を使用して複数の単語を照合する方法を説明できますか?シンプルなインサイト広告システムを作ろうとしています。
「ad_id」列と「keywords」列を持つテーブルと、「page_url」と「keywords」列を持つ別のテーブルがあります。問題は、最初のテーブルでは、特定のad_idのすべてのキーワードが1つの行にあることですが、2番目のテーブルでは、次のような複数の行があります。
page_url:-----キーワード:
page1.php ----- keyword1、keyword2、keyword3
page1.php ----- keyword4
page2.php ----- anotherkeyword
2つの表を比較して、どちらの広告を表示するかを判断しようとしています。2番目のテーブルの同じページ名に対応する複数の行があることを理解しようとすると、本当に問題が発生します。もちろん、それらはすべてコンマで区切られています。
どこから始めればいいですか?何かアドバイスをいただければ幸いです。ありがとう。
sql - Soundex 関数は SQL Server でどのように機能しますか?
SQL での Soundex コードの例を次に示します。
はどう'Smith'
なるのS530
?
この例では、1 桁目がS
入力式の最初の文字であるためですが、残りの 3 桁はどのように計算されるのでしょうか。
sql - データベースに名前を問い合わせる際の提案
私は、多くのデータベースと同様に、経歴情報を含むテーブルを持つ Oracle データベースを持っています。その上で、「自然な」方法で名前で検索したいと思います。
テーブルにはforename
とsurname
フィールドがあり、現在、次のようなものを使用しています。
これは機能しますが、このテーブルのインデックスは明らかに前のワイルドカードを考慮できないため、非常に遅くなる可能性があります。また、ユーザーは通常、電話で話した内容に基づいて人を検索します (膨大な数の英語以外の名前を含む)。そのため、音声分析も行うとよいでしょう。
そのため、私は Oracle Text を試しています。
これには、Soundex アルゴリズムとフルテキスト インデックスを使用できるという利点があるため、もう少し効率的である必要があります。(ただし、私の逸話的な結果は、かなり遅いことを示しています!) これについて私が持っている唯一の懸念は次のとおりです。
まず、テキスト インデックスを意味のある方法で更新する必要があります。使用
on commit
すると遅すぎて、フロントエンド ソフトウェア (私の制御範囲外) がデータベースと対話する方法に干渉する可能性があります。そのため、いくつかの検討が必要です...Oracle から返される結果は、正確に自然にソートされているわけではありません。
score
この機能についてはよくわかりません。たとえば、私の開発データでは、「Jonathan Peter Jason Smith」が一番上に表示されていますが、「Jane Margaret Simpson」は「John Terrance Smith」と同じレベルにあります。
実生活では、名前の途中でチャンクを検索することは決してないため、前のワイルドカードを削除すると、結果を低下させることなくパフォーマンスが向上する可能性があると考えています。しかし、そうでなければ、私はアイデアを受け入れます... このシナリオは、うんざりして実装されたに違いありません! 私が今やっている/考えていることに対して、より良いアプローチを提案できる人はいますか?
ありがとう :)
c# - Soundexアルゴリズムのいくつかの変更
このアルゴリズムは、最初の単語に対して実行されるか、エンコードされた4つの文字列がいっぱいになるまで実行されるように設定されています。たとえば、「HorribleGreat」という入力の結果はH612です。2番目の単語を無視します。つまり、エンコードされた文字列を埋めるために2番目の単語の最初の文字だけを使用します。
最初の単語を取得してそのエンコードされた文字列を見つけ、次に2番目の単語を取得してそのエンコードされた文字列を見つけることによって変更したいと思います。出力は「H614G600」である必要があります。親切に私は**このコードにいくつかの変更を行うことによってそれを行う方法があるかどうか知りたいです。
どうもありがとう :)
mysql - MySQL で文字列をトークン化するにはどうすればよいですか?
私のプロジェクトでは、チームによって手動で作成されたフラットな Excel ファイルから 50 万行以上のデータのかなりのコレクションをインポートしています。ここでの問題は、クライアント検索のために、すべてを正規化する必要があることです。たとえば、会社フィールドには複数の会社のスペルがあり、「IBM」の次に「IBM Inc.」などの支店が含まれます。また、「A46-Rhizonme Pentahol」など、SOUNDEXだけでは扱えない英数字の商品名もあります。
AJAX auto-suggestを使用して、すべてのデータ入力を Web フォームから行うことで、長期的に問題を解決できます。ただし、それまでは、既存のデータの膨大なコレクションに対処する必要があります。これは、私がここで読んだことに基づいて、良いプロセスであると私が信じるものに私を導きます:
http://msdn.microsoft.com/en-us/magazine/cc163731.aspx
カスタムのファジー ロジック ルックアップとファジー ロジックのグループ化を作成する手順
- リスト項目
- 文字列をキーワードにトークン化する
- キーワード TF-IDF の計算 (合計頻度 - 逆ドキュメント頻度)
- キーワード間のレーベンシュタイン距離を計算する
- 利用可能なアルファ文字列でSoundexを計算する
- キーワードのコンテキストを決定する
- コンテキストに基づいて、「会社」、「製品」、「成分」などの個別の DB テーブルにキーワードを配置します。
私はグーグルで、StackOverflow を検索し、MySQL.com のディスカッションなどを読んで、この問題について事前に構築されたソリューションを見つけようとしました。何か案は?
sql-server - SQLServerSoundex名前検索-名前の短縮形を検索します
アプリで名前を検索して、類似した名を返すことができるようにしたいと思います。つまり、ユーザーがJohnを検索した場合、Jonathanも返されるはずです。
Soundex検索はこれを行わないようです。関連する名前の辞書を保存する以外の方法はありますか?