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

これは非常に複雑なトピックです。だから私はあなたにいくつかの出発点を指摘するつもりです。他の誰かがここでこの非常に複雑なトピックに対する良い答えを定式化することができれば、私は彼らに賛成票を与えることを嬉しく思います。

  • Doctrine1にはまともな「検索エンジン」があります。[1](ORMをまだ使用していない場合は、試してみることを強くお勧めします。)
  • Lucene[2]も試してみる価値があります。
  • 独自の検索エンジンをロールします。また、MySQLの機能などについても考えていましたが、実際にはそうではありません。それはすべて、優れたインデックスを構築し、それらをうまく使用することです。(つまり、データベースインデックスを使用するだけでなく、自分で作成することもできます。)時間があれば、実際に取り上げるのは非常に興味深いトピックです。
  • ジョン・マコーミックによって未来を変えた9つのアルゴリズムを購入する。[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 に答える