我是 php 和 mysql 的新手。在我的项目中,我必须为多个列上的多个关键字开发搜索引擎,并且还需要关键字排名和相关性。
例如,如果我有三个单词 hi、hello、hey,并且想要搜索主题、消息、参考、文本正文等字段。在这种情况下,具有更多关键字排名的行将排在第一位,排名最低的行排在最后。有人会指导我如何实现这样的搜索引擎。我的数据库大约有 400 万个,并且正在迅速增长。
我是 php 和 mysql 的新手。在我的项目中,我必须为多个列上的多个关键字开发搜索引擎,并且还需要关键字排名和相关性。
例如,如果我有三个单词 hi、hello、hey,并且想要搜索主题、消息、参考、文本正文等字段。在这种情况下,具有更多关键字排名的行将排在第一位,排名最低的行排在最后。有人会指导我如何实现这样的搜索引擎。我的数据库大约有 400 万个,并且正在迅速增长。
使用全文搜索:
<?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
对列主题、消息、参考、文本正文进行索引
您可以将 AND 或 OR 运算符与 like 关键字一起使用,具体取决于您希望搜索返回的内容。
SELECT * FROM table WHERE subject LIKE %$param1% AND another_col LIKE %$param2% .......;
或者
SELECT * FROM table WHERE subject LIKE %$param1% OR another_col LIKE %$param2% .......;