2

可能重复:
如何在 PHP 中使用 LIKE 语句创建 PDO 参数化查询?

目前我有一个非常简单的搜索引擎,它使用旧的 mysql_* 查询并在查询中使用“like”,我知道这现在已经过时了,使用 like 查询会随着数据库的增长而变慢?

我正在寻找一些关于如何使用 PDO 创建搜索引擎的想法,因为它提供的保护比我目前拥有的更多,我研究了在查询中使用 MATCH 和 AGAINST 来搜索“标题”和“描述”列我的数据库,但由于我是初学者,我不确定从哪里开始。

我一直在试图弄清楚如何实现搜索查询,并在用户输入多个关键字时让搜索工作

非常感谢任何帮助,我知道这可能是一个很大的要求有人向我解释这一点,但我正在尽我所能学习,因为我是一名学生并正在做一个项目

谢谢大家的帮助!

这是我当前代码的一部分,我希望将其更改并更新为更安全且具有更好搜索功能的内容:

$query = "SELECT * FROM people WHERE ";

foreach ($terms as $each){
$i++;

if ($i == 1)
    $query .= "lname LIKE '%$each%' ";
if($i == 1 && $_GET['category'] != '') {
    $query .= "AND category = '$chosencategory' ";
}
else
    $query .= "AND lname LIKE '%$each%' ";
if($_GET['price'] != '') {
    $query .= " ORDER BY price $price";
}
echo $query;
}
4

1 回答 1

3

现在这是一个非常复杂的话题。因此,我只想为您指出几个起点。如果其他人能够在这里为这个非常复杂的话题制定一个很好的答案,我很乐意给他们一个赞成票。

  • 原则 1 有一个不错的“搜索引擎”。[1](如果您还没有使用 ORM,我强烈建议您尝试一下。)
  • Lucene[2] 也值得一试。
  • 滚动您自己的搜索引擎。我也曾经认为它与一些 MySQL 功能或其他东西有关,但事实并非如此。这一切都是为了建立良好的索引并很好地使用它们。(也就是说,自己构建它们。不仅仅是使用数据库索引。)如果你有时间,这实际上是一个非常有趣的话题。
  • 购买改变未来的九种算法 John MacCormick。[3] 它有一个关于搜索引擎如何工作的精彩章节。

[1] http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/searching.html

[2] http://en.wikipedia.org/wiki/Lucene

[3] http://www.amazon.com/Nine-Algorithms-That-Changed-Future/dp/0691147140

于 2012-09-13T21:03:45.743 回答