2016-04-14 34 views
-2

ユーザーが書籍のタイトルを検索したときの検索アルゴリズムは何ですか?特定の文字列に最も近い文字列を一致させる

タイトルが返されるべき本が存在する場合は、それに近い書籍タイトルを表示する必要があります。

最初の場合は、単に文字列を検索する方が簡単です。ほとんどのウェブサイトが使用する第2のケースを解決する方法が必要です。

booksテーブルには、フィールドカテゴリ、クラス、およびタイトルが含まれています。私は以下のコードを試してきました。正確なタイトルを付けると結果が得られます。

$title=isset($_GET['title'])?$_GET['title']:NULL; 
     //$code=isset($_GET['code'])?$_GET['code']:NULL; 
     $class=isset($_GET['class'])?$_GET['class']:NULL; 
     $cat=isset($_GET['category'])?$_GET['category']:NULL; 
     if(isset($title)) 
     $qry="select * from books where quantity>0 and title='$title' "; 
     else{ 
      $qry="select * from books where quantity>0 "; 
      if(isset($class)) $qry.=" and class='$class' "; 
      if(isset($cat)) $qry.=" and category='$cat' "; 
     } 
+0

書籍のタイトルはどのように保存されていますか?彼らはどこに保管されていますか?何を試しましたか?私たちはここではスプーンフィードをしません。 – Daniel

+0

@Stah私が試したことを追加しました。 – user6181297

答えて

1

さて、最初に私はあなたの現在のコードを経由してSQLインジェクションを防ぐために準備されたステートメントを使用してお勧めしますが、SQLでLIKE演算子を使用すると、後者の場合には動作するはずです。

`select * from books where quantity > 0 and title LIKE '%$title%'` 

変更

`select * from books where quantity > 0 and title = '$title'` 

これは、それはまた、単語の周りに文字の欠落をチェックするん何。タイトルが「ウサギ」に等しい場合は、「白ウサギ」、「ウサギ」、「ウサギ」の両方が結果になります。

p.s.空白には何も付かない

+0

よろしいですか?ユーザーが「rabit」(タイプミス)を入力して関連書籍をすべて表示する方法はどうですか? – user6181297

+0

SQLでこれを行う方法はありません。 http://stackoverflow.com/questions/487003/how-to-detect-a-typo-in-a-product-search-and-suggest-possible-corrections – Daniel

+0

タイトルに含まれる単語を白に分割する方法スペースと各単語を検索? – user6181297

関連する問題