如何创建搜索引擎来搜索mysql数据库

时间:2012-09-13 20:43:00

标签: php mysql database search pdo

  

可能重复:
  How do I create a PDO parameterized query with a LIKE statement in PHP?

目前我有一个非常简单的搜索引擎,它使用旧的mysql_ *查询并在查询中使用“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;
}

1 个答案:

答案 0 :(得分:3)

现在这是一个非常复杂的话题。所以我只想指出几个起点。如果其他人能够在这里为这个极其复杂的话题制定一个好的答案,我很乐意给他们一个upvote ..

  • 主义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