如何用php和mysql制作全文搜索引擎?

时间:2015-07-20 19:24:25

标签: php mysql full-text-search full-text-indexing

我使用开源代码创建了一个php搜索引擎。我创建了一个数据库和一个包含5列的表:

标题说明关键字链接日期

我正在使用的代码是下面的php代码:

<?php
    $keywords = $_GET ['input'];        
     $keywords = "Led Zeppelin";
$words = explode(" ",$keyword);

foreach ($words as $w) {
    $keyword_parts .= "+" . $w ." ";
}
$keyword_parts = substr($keyword_parts,0,-1);
$query = "SELECT
          *,
          MATCH (keywords,title) AGAINST ('" . $keywords . "') as score
          FROM search
          WHERE MATCH (keywords,title) AGAINST ('" . $keyword_parts . "' IN BOOLEAN MODE)
          ORDER BY score DESC";

    //connect
    mysql_connect ("localhost", "root", "password");
    mysql_select_db("intranet");

    $query = mysql_query($query);
    $numrows = mysql_num_rows ($query);
    if($numrows >0){
        while ($row = mysql_fetch_assoc($query)){
            $id = $row ['id'];
            $title = $row ['title'];
            $description = $row ['description'];
            $keywords = $row ['keywords'];
            $link = $row ['link'];
            $date = $row ['date'];

            echo "<h2><a href='$link'>$title</a><h2/>
            $description <br /><br />";
        }
    }
    else 
        echo "No results found for \"<b>$each</b>\" ";

    //disconnect
    mysql_close();
?>

搜索脚本运行正常,但唯一的问题是它按关键字搜索会增加搜索结果,但很难找到你想要的东西,因为不同条目上的很多关键字都匹配。

现在,我正在网上阅读有关全文搜索的内容(“全文搜索是使用MATCH()... AGAINST语法执行的.MATCH()”)但我不知道如何将其应用于我的代码。

1 个答案:

答案 0 :(得分:1)

这是我过去使用过的。此外,您要进行MATCH的列必须更改为允许FULLTEXT:

super.onBackPressed()