0

私はphpとmysqlが初めてです。私のプロジェクトでは、複数の列で複数のキーワードの検索エンジンを開発する必要があり、キーワードのランキングと関連性も必要です。

たとえば、hi、hello、hey という 3 つの単語があり、件名、メッセージ、参照、本文などのフィールドで検索したい場合を考えてみます。この場合、より多くのキーワードランキングを持つ行が最初になり、最も低いランキングの行が最後になります。そのような検索エンジンを実装する方法を教えてください。私のデータベースは約 400 万あり、急速に成長しています。

4

2 に答える 2

1

全文検索を使用する:

<?PHP

    //SET THE SEARCH TERM
    $term = "Search Term";


    $sql = "SELECT *, MATCH(subject, message,reference,textbody) AGAINST('". $term ."') as score FROM pages WHERE MATCH (subject, message,reference,textbody) AGAINST('". $term ."') ORDER BY score DESC";
    $query = mysql_query($sql);

    //BUILD A LIST OF THE RESULTS
    while($result = mysql_fetch_assoc($query)) {
       // your stuff for showing result
    }

?>

FULLTEXT注:件名、メッセージ、参照、テキスト本文の列にインデックスを作成する必要があります

于 2012-01-27T05:31:02.083 に答える
0

検索で何を返したいかに応じて、like キーワードで AND または OR 演算子を使用できます。

SELECT * FROM table WHERE subject LIKE %$param1% AND another_col LIKE %$param2% .......;

また

SELECT * FROM table WHERE subject LIKE %$param1% OR another_col LIKE %$param2% .......;
于 2012-01-27T06:34:31.100 に答える