1

基本的にビデオ検索エンジンで構成される Web サイトがあります。指定された入力条件について mysql を照会する次のコードがあります。

$search=htmlspecialchars($_GET['load']); 
$say=mysql_query("SELECT * FROM madvideo WHERE MATCH (baslik) AGAINST ('*$search*' IN BOOLEAN MODE)"); 

次に、結果を表示する次のコードがあります。

     $katala=mysql_query("SELECT * FROM madvideo WHERE MATCH (baslik) AGAINST ('*$search*' IN BOOLEAN MODE) order by id asc limit $s,$perpage");
            $i=0;
                    while ($sea=mysql_fetch_array($katala))  { 
            $i++;

$idd=$sea['id']; $seoo=$sea['seo']; $baslikk=$sea['baslik']; $resimm=$sea['resim']; $suree=$sea['sure'];
 $izlenmee=$sea['izlenme']; $tarihh=$sea['tarih']; $katt=$sea['kat'];

これの何が問題なのか説明してみましょう。あなたが私のウェブサイトで「いちごを食べるのが好き」と検索したとしましょう。

そして、mysql テーブルに「いちごを食べるのが好き」というまったく同じ名前のエントリがあるとします。

現在のコードでは、次の例の結果が得られます。

「私は自分の車を運転するのが好きです」「私の車は超速いです」「彼らはたくさん食べます」など、関連する結果が表示されるかもしれませんが、最初は私が望むようにはなりません。

たとえば、グーグルのように、より関連性の高い方法で結果を表示するにはどうすればよいですか?

4

1 に答える 1

2

検索用語を単語に分割して、like式を使用して動的に条件による順序を作成できるようにします。mysql の論理式の結果は 1 または 0 であるため、これらの式を追加できます。

SELECT * 
FROM madvideo 
WHERE MATCH (baslik) AGAINST ('*$search*' IN BOOLEAN MODE) 
order by 
    (baslik like '%$word1%') 
    + (baslik like '%word2%')
    + (baslik like '%word3%')
    desc
limit $s,$perpage
于 2012-10-09T12:30:44.747 に答える