php搜索引擎关键词排名
问题描述:
我是新来的php和mysql。在我的项目中,我必须开发多个关键字多个关键字的搜索引擎,并且还需要关键字排名和相关性。php搜索引擎关键词排名
例如,如果我有三个单词嗨,你好,嘿,并希望搜索字段,如主题,消息,参考,textbody。在这种情况下,具有更多关键字排名的行将排在第一位,排名最低的行排在最后。任何人都会指导我如何实现这样的搜索引擎。我的数据库大约有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
索引的列主题,邮件,引用的TextBody
答
可以使用AND或OR运算关键词中,根据您想要搜索返回的内容。
SELECT * FROM table WHERE subject LIKE %$param1% AND another_col LIKE %$param2% .......;
OR
SELECT * FROM table WHERE subject LIKE %$param1% OR another_col LIKE %$param2% .......;
+0
但在这种情况下,我不能将数据库引擎类型innodb更改为myism。所以我不能使用全文搜索功能。任何关键字排名的替代?我想要比http://r937.com/keyword_relevance.html更好的东西 – Prabhu 2012-01-27 06:45:08
感谢响应。一些查询:全文工作在innodb数据库引擎中?而使用匹配......反对我得到的结果有所有的话第一,任何两个第二和任何一个三阶?请你根据你的实践展示一些最有用的例子。再次感谢。 – Prabhu 2012-01-27 06:18:12
我在查询数据库时遇到了错误:**使用的表类型不支持FULLTEXT索引** – Prabhu 2012-01-27 06:22:12
正如我在最后注意到的那样(您应该在列主题,消息,引用,textbody上使用FULLTEXT索引)应用全文本像这样的查询索引这些列:ALTER TABLE tablename ADD FULLTEXT(subject,message,reference,textbody) – 2012-01-27 06:26:57