2016-04-14 193 views
-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 = '$title'` 

`select * from books where quantity > 0 and title LIKE '%$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