人のテーブル(名前、姓、住所、SSNなど)があるとしましょう。SQLとファジーの比較
特定の人物Aと「非常によく似ている」すべての行を検索したいとします。 AとテーブルPeopleからのすべての行の何らかのファジー論理比較を実装したいと思います。いくつかの列に別々に働くファジー推論ルールがいくつかあります(たとえば、名前の3つのファジールール、姓のルール2つ、住所のルール5つ)
質問はどちらですか?
このアプローチ
実装する、シムメトリックのsoundexを使用することを含むことができるストアドプロシージャのように、すべてのファジールールを実装し、Aに「非常に類似」であるすべての行を返すために、1つの重SELECT文を使用より正確な結果を返す単純なSELECT文を1つ以上、「Aと似ている」とし、Aをすべての返された行(データベース外)とファジィ比較して「非常によく似た」行を得る。だから私の好きなプログラミング言語ではあいまいな比較が実装されるでしょう。
テーブル人数は500kまでです。これは1日あたり500-1000件のクエリを作成したいと考えています。私はMySQLを使用します(しかしこれはまだ考慮されていません)。
使用しているrdbmsを教えてください。 –
あなたのselectでそれが似ている場合は1を返し、そうでない場合は0を返し、すべての列を合計するケースを使用しないでください。特定の範囲を超える人は返却する必要があります。あなたの問題に対する簡単な解決策のようです。 –
@JesusZamora:問題は、まず類似点の値が浮動小数点(例えば0.43)になる可能性があるということです。そのため、私は「あいまい比較」について話していました。第2の問題は、この類似性の価値を数えることはむしろ面倒であり、このアプローチのどちらがより最適であるかはわかりません。 –