2

私は住所標準化の申請に取り組んでいます。8000 行のデータベース テーブルがあり、各行にはアドレスが含まれています。私の目標は、データベース内の他のすべてのアドレスに対して各アドレスをチェックして、完全一致ではない類似の一致を確認し、結果を出力することです。

現在、私のアプローチは、8000行を配列にロードし、ネストされたforeachループを使用して、一致が見つかったときにtrueを返す関数にアドレスを渡します(そして、一致を配列に格納して、ループの後にすべての一致を出力します) .

問題は、ロードに時間がかかることです。これは通常、皆さんがこれにアプローチする方法ですか、それとも他の解決策を探す必要がありますか?

例: 「123 garden st. ste. 140」は「123 garden street suite 140」と一致するはずですが、データベースの並べ替えのアイデアは考えさせられます..

すべての助けに大歓迎です!、Trevor Kavanaugh

4

2 に答える 2

4

ループは反復ごとに要素のコピーを作成するため、リソースを集中的に使用するため、forループを使用します。foreach現在のネストされたループ メソッドを使用すると言うのは正しいですが、一致するメソッドを 8000^8000 回呼び出すことになりますか? これも非常に集中的です。別の方法として、住所フィールドで並べ替えを使用してデータベースにクエリを実行することができます。したがって、一致アルゴリズムは、array[i]住所が等しいかどうかなどを確認array[i+1]し、ネストされたループの必要性を取り除きます。

于 2013-05-23T17:22:45.080 に答える