小さな PHP/MySQL アプリケーションにあいまい検索を実装しようとしています。具体的には、約 2400 レコードのデータベースがあります (レコードは年間約 600 の割合で追加されるため、小さなデータベースです)。対象となる 3 つのフィールドは、番地、姓、および日付です。これらのフィールドのいずれかで検索できるようにしたいのですが、基本的にスペル/文字のエラーに対する許容度があります。つまり、「123 Main Street」の住所は、「123 Main St」、「123 Main St.」、「123 Mian St」、「123 Man St」、「132 Main St」などと一致する必要があり、名前についても同様です。と日付。
他の同様の質問への回答で私が抱えている主な問題:
- 考えられるすべての間違ったスペルに対して類義語を定義することは不可能です。日付と名前について定義することは忘れてください。
- Lucene などは、このような限られた検索データ セット (最大 5,000 レコード、1 レコードあたり 3 フィールドと呼びます) に対して非常に重いようです。
- ワイルドカードを使って何かをするだけでは、すべてのスペル ミスが考えられるため、論理的には思えません。
助言がありますか?MySQL でネイティブに実行できないことはわかっていますが、データ セットが非常に限られているため、比較的シンプルに保ちたいと考えています...おそらく、DB からすべてのレコードを取得する PHP クラス、ある種の比較アルゴリズムを使用して、類似したレコードの ID を返しますか?
ありがとう、ジェイソン