mysql 全文检索中文解决方法
最近公司项目要求这样的功能,在数据库中检索中文,很是棘手,上网查询下资料,找的类似文章,这里及记录下,希望能帮助到大家,
实例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<?php /* mysql全文检索中文解决方案! */ error_reporting (E_ERROR | E_WARNING | E_PARSE); ini_set ( 'display_errors' , '1' ); //数据库支持 class SaeMysql{ //phpmysql操作类 } $DBS = new SaeMysql; //数据加入 echo '2' ; /*创建数据表*/ $DBS ->runSql('CREATE TABLE IF NOT EXISTS `ces_articles` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT \'\', `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `url` (`url`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC'); /*数据加入*/ $title = '我爱大家啊,大家好' ; $DBS ->runSql( 'INSERT INTO `ces_articles` (id,title,url) VALUES (0,\'' . $title . '\',\'' . str_replace ( '\u' , 'u' ,trim(json_encode( $title ))). '\')' ); $title = '中国是什么' ; $DBS ->runSql( 'INSERT INTO `ces_articles` (id,title,url) VALUES (0,\'' . $title . '\',\'' . str_replace ( '\u' , 'u' ,trim(json_encode( $title ))). '\')' ); $title = 'http://www.zzvips.com' ; $DBS ->runSql( 'INSERT INTO `ces_articles` (id,title,url) VALUES (0,\'' . $title . '\',\'' . str_replace ( '\u' , 'u' ,trim(json_encode( $title ))). '\')' ); $title = '问答系统' ; $DBS ->runSql( 'INSERT INTO `ces_articles` (id,title,url) VALUES (0,\'' . $title . '\',\'' . str_replace ( '\u' , 'u' ,trim(json_encode( $title ))). '\')' ); $title = '1912网' ; $DBS ->runSql( 'INSERT INTO `ces_articles` (id,title,url) VALUES (0,\'' . $title . '\',\'' . str_replace ( '\u' , 'u' ,trim(json_encode( $title ))). '\')' ); $title = '零九网络' ; $DBS ->runSql( 'INSERT INTO `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' ]))). '\' IN BOOLEAN MODE)' ;} $query = $DBS ->getData( 'SELECT * FROM `ces_articles` where ' . $sql . ' LIMIT 10' ); echo 'q' ; if ( $query ){ foreach ( $query as $article ){ echo $article [ 'id' ]; } } ?> |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!