必要に応じてここからアクセスできる YouTube の素晴らしいビデオのおかげで、php 検索エンジンを作成することができました。以下はコードです:
<?php
//connected to DB
foreach (array('questioncontent') as $varname) {
$questioncontent = (isset($_GET[$varname])) ? $_GET[$varname] : '';
}
?>
<form action="previousquestions.php" method="get">
<p>Search: <input type="text" name="questioncontent" value="<?php echo $questioncontent; ?>" /></p>
<p><input id="searchquestion" name="searchQuestion" type="submit" value="Search" /></p>
</form>
<?php
if (isset($_GET['searchQuestion'])) {
$searchquestion = $questioncontent;
$terms = explode(" ", $searchquestion);
$questionquery = "SELECT * FROM Question WHERE ";
foreach ($terms as $each){
$i++;
if ($i == 1){
$questionquery .= "QuestionContent LIKE '%$each%' ";
} else{
$questionquery .= "OR QuestionContent LIKE '%$each%' ";
}
}
$questionnum = mysql_num_rows($questionresult = mysql_query($questionquery));
else if($questionnum !=0){
$output = "";
$output .= "
<table border='1'>
<tr>
<th>Question</th>
</tr>
";
while ($questionrow = mysql_fetch_array($questionresult)) {
$output .= "
<tr>
<td>{$questionrow['QuestionContent']}</td>
</tr>";
}
$output .= " </table>";
echo $output;
}
}
mysql_close();
?>
ここで、可能であれば検索結果をどのように並べ替えることができるかについて質問があります。データベースに次の 3 つのステートメントがあるとします。
My name
My name is Mayur Patel
My name is Patel
ここで、検索ボックスに「name Mayur Patel」と入力すると、最初にこれらのキーワードをすべて含む行が表示され、次にそれらの行がすべて表示された後にそれらの行が表示されるように結果を並べ替える必要があります。これらのキーワードの一部が含まれているため (キーワードを 1 つずつノックアウト)、検索結果は以下の順序で表示されます。
My name is Mayur Patel (all keywords match in this phrase)
My name is Patel (2 keywords match this phrase which are 'name' and 'Patel')
My name (1 keyword match this phrase which is 'name')
データベース内のフレーズ内で一致するキーワードの数に応じて検索結果を並べ替えることができるかどうかを知りたいですか?