2016-04-14 137 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