1

検索エンジンをゼロから構築しています。

  • 複数のデータベース内のさまざまなテーブルをスキャンします。
  • 指定された列のみを検索します。
  • 検索語はexplode()複数語検索の場合
  • foreachテーブルを介して 反復します。

でコード ベースを構成するのに問題がありますLIMIT。のみ表示したいDISTINCT

たとえばJoe Schmoe、コードを検索するfirst = joeと、次にが検索されlast = schmoe、検索ごとに結果が表示されます。しかし、2 つの検索に対して 1 つの結果のみを表示したいと考えています。

<?php

echo "<h1>Search Results</h1>";

echo "<table style='width: 100%;'>";

$a = $_GET["q"];

$b = explode(" ", $a);

include 'db_connect3.php';

mysql_select_db("db440035579", $con);

foreach($b as $c){
$sql="SELECT * FROM users WHERE first LIKE '%$c%' || last LIKE '%$c%'";

$result = mysql_query($sql);

while($row = mysql_fetch_array($result))
  {
  echo "<a href='applications.php?act=search&uid=$row[7]'>$row[5], $row[4]</a>";
  }
}


mysql_close($con);
?>
4

1 に答える 1

0

まずはhttp://bobby-tables.com/

次に、プラグインにPDOは数行のコードしか必要ありません。

第三に、FULL TEXT SEARCH ははるかに優れています。

そして最後に:

配列のマイクロキャッシングを使用します。だと思い$row[0]ますuser.id。そうすれば、1回につき1つのアイテムしか取得できませんID

$cache = array();    
foreach($b as $c){
    $sql="SELECT * FROM users WHERE first LIKE '%$c%' || last LIKE '%$c%'";

    $result = mysql_query($sql);

    while($row = mysql_fetch_array($result)){
        $cache[$row[0]] = $row;
    }
}
foreach($cache as $row){
    echo "<a href='applications.php?act=search&uid=$row[7]'>$row[5], $row[4]</a>";
}
于 2013-03-19T14:32:58.523 に答える