重複の可能性:
ユーザー入力に一致する単語数に基づいてランキングを設定する方法
入力された単語の量によってランク付けされ、タイトル、説明、キーワード、リンクのフィールドで切り出されたタイプの量によってランク付けされる検索エンジンを作成するにはどうすればよいですか。
したがって、上位の結果は、ユーザーが送信した単語の数が多い順に並べられます。ユーザーがiPhoneで入力した場合、iPhoneのキーワードがリンク、説明、およびタイトルフィールドに表示されるため、説明でのみ言及しているAppleや、タイトルと説明で言及しているApple Storeよりも上位にランク付けされます。 .
私のコードは以下の通りです:
$query = " SELECT * FROM scan WHERE ";
$terms = array_map('mysql_real_escape_string', $terms);
$i = 0;
foreach ($terms as $each) {
if ($i++ !== 0){
$query .= " AND ";
}
$query .= "Match(title, description, keywords, link) Against ('".implode(' ',$terms)." IN BOOLEAN MODE') ";
}
$secs = microtime();
$query = mysql_query($query) or die('MySQL Query Error: ' . mysql_error( $connect ));
echo '<p class="time">Qlick showed your results in ' . number_format($secs,2) . ' seconds.</p>';
$numrows = mysql_num_rows($query);
if ($numrows > 0) {
while ($row = mysql_fetch_assoc($query)) {
$id = $row['id'];
$title1 = $row['title'];
$description = $row['description'];
$keywords = $row['keywords'];
$link = $row['link'];
$rank = $row['rank'];
$title = substr($title1,0,60);
echo '<h2><a class="ok" href="' . $link . '">' . $title . '</a></h2>' . PHP_EOL;
echo '<p class="kk">' . $description . '<br><br><span class="keywords">' . PHP_EOL;
echo '<p><a class="okay" href="' . $link . '">' . $link . '<br><br><span class="keywords">' . PHP_EOL;
}