こんばんは、
小さな検索アルゴリズムを構築しようとしているときに、小さな問題に直面しています。
ビデオ ゲーム名とソフトウェア名を含むデータベース テーブルがあります。ここで、他のサーバーで xml ファイルを取得して解析することにより、新しいオファーを追加したいと考えています。問題は次のとおりです。
オファー名がデータベースに保存されている製品名と 100% 一致しない場合でも機能するように、製品名の文字列を比較するにはどうすればよいですか?
例として、私は現在、この PHP + SQL コードを使用して文字列を比較しています。
$query_GID = "select ID,game from gkn_catalog where game like '%$batch_name%' or meta like '%$batch_name%' ";
現在、like演算子を 2 つのワイルドカードと組み合わせて使用して、オファー名 ( batch_name ) をデータベース内の名前 ( game ) と比較しています。
この方法はあまりフェイルセーフではないか、何と呼んでもよいので、これをどのように改善できるかを知りたいのですが、何が起こるかは次のとおりです。
データベースがゲームのタイトルを次のように示している場合:
デウスエクスヒューマンレボリューション ミッシングリンク
そして、batch_name は次のように述べています。
デウスエクスヒューマンレボリューション ミッシングリンクDLC
結果は空/間違った/偽になります...データベースでゲームがまったく見つかりません。
次のようなものについても同じことが言えます。
Database = Lego Star Wars The Complete Saga
batch_name = Lego Star Wars : The Complete Saga
結果: False
SQL クエリを実行するためのより良い方法はありますか?
または、特殊文字 (-minus- & [brackets] など)
を含む文字列や、データベース内の名前に含まれていない文字 (DLC、CE など) を処理できるように、そのクエリを機能させるにはどうすればよいですか? ...)?