PHP (Codeigniter) には、クエリを受け取り、それを MySQL テーブルの名前と照合しようとする非常に単純な検索機能があります。表は、名前をエイリアス、名、および姓に分割します。
$this->db->where("alias LIKE '%$query%' OR firstname LIKE '%$query%' OR lastname LIKE '%$query%' OR CONCAT(firstname,' ',lastname) LIKE '%$query%'");
これはほとんどの場合に機能します。データベース内の名前の 1 つで問題が発生します -- 姓はSmith-Ponsonby
(議論のために) です。ユーザーが を検索するSmith-Ponsonby
と、正しい結果が表示されます。しかし、ユーザーが誤ってハイフンを逃して を検索した場合Smith Ponsonby
、何も返されません (私のコードで予想されるように)。しかし、私はこれらの偶発的なケースに対応したいと考えています。非常に単純なものが必要ですが、私の検索では非常に精巧なあいまい検索アルゴリズムしか見つかりませんでした。どんなアイデアでも大歓迎です。