mysql 全文检索中文解决方法及实例代码
mysql全文检索中文解决方法
最近公司项目要求这样的功能,在数据库中检索中文,很是棘手,上网查询下资料,找的类似文章,这里及记录下,希望能帮助到大家,
实例代码:
<?php
/*
mysql全文检索中文解决方案!
*/
error_reporting(E_ERROR|E_WARNING|E_PARSE);
ini_set('display_errors','1');
//数据库支持
classSaeMysql{
//phpmysql操作类
}
$DBS=newSaeMysql;
//数据加入
echo'2';
/*创建数据表*/
$DBS->runSql('CREATETABLEIFNOTEXISTS`ces_articles`(
`id`mediumint(8)unsignedNOTNULLAUTO_INCREMENT,
`title`varchar(255)COLLATEutf8_unicode_ciNOTNULLDEFAULT\'\',
`url`varchar(255)CHARACTERSETutf8COLLATEutf8_binDEFAULTNULL,
PRIMARYKEY(`id`),
FULLTEXTKEY`url`(`url`)
)ENGINE=MyISAMAUTO_INCREMENT=1DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ciROW_FORMAT=DYNAMIC');
/*数据加入*/
$title='我爱大家啊,大家好';
$DBS->runSql('INSERTINTO`ces_articles`(id,title,url)VALUES(0,\''.$title.'\',\''.str_replace('\u','u',trim(json_encode($title))).'\')');
$title='中国是什么';
$DBS->runSql('INSERTINTO`ces_articles`(id,title,url)VALUES(0,\''.$title.'\',\''.str_replace('\u','u',trim(json_encode($title))).'\')');
$title='http://ask.1912news.com';
$DBS->runSql('INSERTINTO`ces_articles`(id,title,url)VALUES(0,\''.$title.'\',\''.str_replace('\u','u',trim(json_encode($title))).'\')');
$title='问答系统';
$DBS->runSql('INSERTINTO`ces_articles`(id,title,url)VALUES(0,\''.$title.'\',\''.str_replace('\u','u',trim(json_encode($title))).'\')');
$title='1912网';
$DBS->runSql('INSERTINTO`ces_articles`(id,title,url)VALUES(0,\''.$title.'\',\''.str_replace('\u','u',trim(json_encode($title))).'\')');
$title='零九网络';
$DBS->runSql('INSERTINTO`ces_articles`(id,title,url)VALUES(0,\''.$title.'\',\''.str_replace('\u','u',trim(json_encode($title))).'\')');
//搜索:
$_GET['q']="中国";
echo'q';
if(isset($_GET['q'])){$sql='match(url)against(\''.str_replace('\u','u',trim(json_encode($_GET['q']))).'\'INBOOLEANMODE)';}
$query=$DBS->getData('SELECT*FROM`ces_articles`where'.$sql.'LIMIT10');
echo'q';
if($query){
foreach($queryas$article){
echo$article['id'];
}
}
?>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!