PHP/MySQLを使用してブールモードでフルテキスト検索を作成しました。関連性のランキングと関連するデータベースフィールドに割り当てられたインデックスで完全に実行されます。 、>名前、説明、連絡先、住所検索結果を変数に代入する - PHPフルテキスト検索ブール
* SEARCH_TERMS * serialid - -
ビジネス>用語、querytime、date_searched、結果を:データベースには、2つのテーブルが含まれています。
今すると、私はすべての検索結果を取得したいと変数($結果)にそれを割り当てられました。この$結果は、terms、querytime、およびdate_searchedと一緒にsearch_termテーブルに格納されます。ここで
は($結果なし)私のコードです
function search($term){
$term = mysql_real_escape_string($term);
$startTime = microtime(true);
$query = mysql_query("SELECT *, MATCH (Name) AGAINST ('+$term*' IN BOOLEAN MODE) AS rel1, MATCH (Description) AGAINST ('+$term*' IN BOOLEAN MODE) AS rel2, MATCH (Keywords) AGAINST ('+$term*' IN BOOLEAN MODE) AS rel3 FROM business WHERE MATCH (Name,Description,Keywords) AGAINST ('+$term*' IN BOOLEAN MODE) ORDER BY (rel1*0.60)+(rel2*0.25)+(rel3*0.15) DESC") or die(mysql_error());
$endTime = microtime(true);
$queryTime = substr($endTime - $startTime, 0,6);
if(mysql_num_rows($query) == 0){
echo "<p>No results found for <i>". $term ."</i></p>";
}
else{
while($row = mysql_fetch_assoc($query)){
echo "<h4><a href='viewBusiness.php?serial=" . $row['SerialId'] . "'>" . $row['Name'] . "</a></h4>";
$desc = substr($row['Description'], 0,100);
$score = $row['rel1'] + $row['rel2'] + $row['rel3'];
echo "<p>" . $desc .". . .</p>";
}
$numOfResult = mysql_num_rows($query);
echo "<hr/><p><b>" . $numOfResult ." </b>result(s) found within " . $queryTime . " seconds.</p>";
$ip = $_SERVER['REMOTE_ADDR'];
$query2 = mysql_query("INSERT INTO search_term(Term, QueryTime, Ip) VALUES('$term', '$queryTime', '$ip')") or die(mysql_error());
}
}
私はPHPでの初心者です、これは私の最初のアプリケーションです。助けてくれてありがとう!
/* Your code before the cycle... */
$result = array(); /* The array where to store results */
while($row = mysql_fetch_assoc($query)) {
/* Your code for printing, just as posted... */
$result[] = $row; /* Store the result row in the array */
}
/* The rest of your code, before second query... */
/* Serialize the result data and save it to database */
$result_serialized = mysql_real_escape_string(serialize($result));
$query2 = mysql_query("
INSERT INTO search_term(Term, QueryTime, Ip, result)
VALUES('$term', '$queryTime', '$ip', '$result_serialized')
") or die(mysql_error());
しかし、注意してください:あなたが作成して保存あなた$result
をDBには、このようにすることができます
それは私をたくさん助けました!どうもありがとうございます! –
PHPのリファレンスを 'serialize()'と 'unserialize()'に追加しました。**これは**データベースからデータを読み戻すために**使用する必要があります。回答の投票番号の下に* tick *アイコンを使用して私の回答を受け入れてください。 –