검색 양식에 'good'을 입력하면 'good'이라는 키워드가 포함 된 모든 결과가 표시됩니다. 그러나 사용자가 '좋은 가장 좋은'형식을 입력하면 두 단어가 함께 나타나는 레코드가 없기 때문에 결과가 표시되지 않습니다. 하지만 다른 장소에있는 항목에 나타납니다.검색 결과가 두 개 이상의 단어로 표시되는 경우
예를 들어, 기록은 말한다 :
좋은 행동이 계속 남아있는 저장하고 순수한 수율이 '좋은', 그것은이 표시됩니다에
사용자 유형입니다 그러나 사용자가 '좋은'+ '순수한'을 입력하면 아무 것도 표시되지 않습니다. 또는 레코드에 'good-deeds'라는 키워드가 포함되어 있고 사용자가 하이픈없이 'gooddeeds'를 입력하면 아무 것도 표시되지 않습니다.
사용자가 '좋은'+ '순수한'또는 '좋은 행위'를 입력하면 강조 표시된 키워드가 포함 된 레코드 여야합니다.
search.php 코드 :
$search_result = "";
$search_result = $_POST["q"];
$search_result = trim($search_result);
//Check if the string is empty
if ($search_result == "") {
echo "<p class='error'>Search Error. Please Enter Your Search Query.</p>" ;
exit();
}
if ($search_result == "%" || $search_result == "_" || $search_result == "+") {
echo "<p class='error1'>Search Error. Please Enter a Valid Search Query.</p>" ;
exit();
}
$result = mysql_query('SELECT cQuotes, vAuthor, cArabic, vReference FROM thquotes WHERE cQuotes LIKE "%' . mysql_real_escape_string($search_result) .'%" ORDER BY idQuotes DESC', $conn)
or die ('Error: '.mysql_error());
function h($s) {
echo htmlspecialchars($s, ENT_QUOTES);
}
function highlightWords($string, $word)
{
$string = preg_replace("/".preg_quote($word, "/")."/i", "<span class='highlight'>$0</span>", $string);
/*** return the highlighted string ***/
return $string;
}
?>
<div class="caption">Search Results</div>
<div class="center_div">
<table>
<?php while ($row= mysql_fetch_array($result, MYSQL_ASSOC)) {
$cQuote = highlightWords(htmlspecialchars($row['cQuotes']), $search_result);
?>
<tr>
<td style="text-align:right; font-size:18px;"><?php h($row['cArabic']); ?></td>
<td style="font-size:16px;"><?php echo $cQuote; ?></td>
<td style="font-size:12px;"><?php h($row['vAuthor']); ?></td>
<td style="font-size:12px; font-style:italic; text-align:right;"><?php h($row['vReference']); ?></td>
</tr>
<?php } ?>
</table>
</div>
search.html에가 :
<form name="myform" class="wrapper">
<input type="text" name="q" onkeyup="showUser()" class="txt_search"/>
<input type="button" name="button" onclick="showUser()" class="button"/>
<p>
<div id="txtHint"></div>
</form>
내 테이블 유형이 INNODB입니다. 불행히도 FULLTEXT를 지원하지 않는다고합니다. – input
그 경우, 문제 해결을 위해 http://stackoverflow.com/questions/1381186/fulltext-search-with-innodb를 살펴 보시기 바랍니다. 해당 게시물에서 제안한 것과 같은 전용 검색 엔진을 사용할 수 없다면, InnoDB 데이터를 MyISAM 테이블에 복제하고 테이블에서 검색하거나 수동으로 솔루션을 롤링하는 등의 다른 작업을 수행 할 수 있습니다 가브리엘 (Gabriel)이 제안한 것처럼 콘텐츠를 분할하고 단어를 올바른 게시물에 연결합니다. –
답변 해 주셔서 감사합니다. php 대안으로 나아 가기로 결정했습니다. http://www.acuras.co.uk/articles/2-php-multi-word-mysql-search-algorithm-and-output – input