Birden fazla kelime arama sonuçlarını görüntülerken

3 Cevap php

benim arama formunda, kullanıcı türleri 'iyi', bu anahtar kelime 'iyi' içeren tüm sonuçları görüntüler eğer. Ancak birlikte görünen iki kelime ile hiçbir kayıt yoktur, çünkü 'iyi tatlı' in kullanıcı türleri, hiçbir sonuç görüntüler ise; ANCAK farklı yerlerde bir girdinin görünen.

Örneğin, kayıt diyor ki:

A good action is an ever-remaining store and a pure yield

kullanıcı türleri 'iyi' + 'saf', bir şey göstermez eğer 'iyi' olarak kullanıcı türleri, bu kaydı ortaya, ama olacaktır. veya kayıt anahtar kelimenin 'iyi işler' içerir ve eğer tire olmadan 'iyi işler' olarak kullanıcı türleri, bu hiçbir şey görünmüyor eğer.

ne ben isterim 'iyi' + 'saf' ya da 'iyi işler' olarak kullanıcı türleri bu anahtar kelimeleri içeren kayıtlar bunları vurgulayarak gerekiyorsa olmasıdır.

search.php kodu:

$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>

3 Cevap

Ne denir istediğiniz full-text searching. Basitçe, tam metin arama temelde kendi her kelime arar.

Eğer endeksi sorgulamak ve ilişkili içeriği geri arama yaparken arama bu tür yararlanmak için içerik indeksleme uygulamak isteyeceksiniz, (orada plak gibi) bir içerik bileşeni ile her kelimeyi ilişkilendirerek aslında bir ilişkisel tablo, aynı zamanda bu değiştirmenizi sağlar sayı ile alaka, http://www.databasejournal.com/sqletc/article.php/1578331/Using-Fulltext-Indexes-in-MySQL---Part-1.htm Bu iyi bir başlangıç ​​olabilir vb endeksli olması alanları ekleyin.

Benim düşünceme göre, siteniz için doğru bir arama motoru yaparak yapmak için zor şeylerden biridir. Ben sadece google sitemde kaydolmak ve google indeksi let it olacaktır. Siz sayfanın çıktısını özelleştirmek ve sitenize içine bakmak entegre edebilirsiniz.

Tek kanıt "Google" markalı arama butonu olacak, ama dürüst olmak gerekirse, ben artık bu kaldırabilirsiniz düşünüyorum.