php mysql中文搜索_mysql全文搜索中文应用

这篇博客介绍了MySQL中的全文搜索功能,强调了全文检索必须使用MyISAM存储引擎。通过示例展示了如何使用Match()和Against()函数进行搜索,并详细解释了布尔文本搜索的不同操作符,如+、-、>、<等,以及它们在查询中的作用。还提到了在Linux环境下配置MySQL中文全文搜索的方法。
摘要由CSDN通过智能技术生成

今天要介绍的就是mysql全文搜索的应用,全文检索的表的存储引擎类型必须为MyISAM,否则不能做全文搜索哦。

首先用下面表举例:

代码如下

复制代码

01.CREATE TABLE articles (02.id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,03.title VARCHAR(200),04.body TEXT,05.FULLTEXT (title,body)06.) ENGINE=MyISAM DEFAULT CHARSET=utf8;

MySQL使用Match()和Against()执行全文搜索,举例如下:

代码如下

复制代码

SELECT body FROM articles WHERE Match(body) Against('www.phpddt.com');

如上Match是正对指定的列进行搜索,Against('www.phpddt.com')是正对指定词进行搜索

另外:

使用查询扩展WITH QUERY EXPANSION,将会搜索出更多结果(mysql会将匹配的行中有用的词再次进行搜索,这样搜索出来的结果更多,但可能不是你想要的);

使用布尔文本搜索IN BOOLEAN MODE,类似我们平时使用搜索引擎时用到的的语法:逻辑与、逻辑或、逻辑非等.支持的布尔操作符如下:

全文布尔操作符:

--------------------------------------------------------------------------------------------------------------

|操作符 | 说明 |

--------------------------------------------------------------------------------------------------------------

| + |包含,词必须存在

| - |排除,词必须不出现

| > |包含,而且增加等级值

| < |包含,且减少等级值

| () |把词组成子表达式(允许这些子表达式作为一个组被包含,排除,排列等)

| ~ |取消一个词的排序值

| * |词尾的通配符

| " " |定义一个短语(与单个词的列表不一样,它匹配整个短语以便包含或排除这个短语)

----------------------------------------------------------------------------------------------------------------

使用方法如下:

代码如下

复制代码

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('+apple -banana' IN BOOLEAN MODE);

+ 表示AND,即必须包含。- 表示NOT,即不包含。

代码如下

复制代码

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('apple banana' IN BOOLEAN MODE);

apple和banana之间是空格,空格表示OR,即至少包含apple、banana中的一个。

代码如下

复制代码

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('+apple banana' IN BOOLEAN MODE);

必须包含apple,但是如果同时也包含banana则会获得更高的权重。

代码如下

复制代码

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('+apple ~banana' IN BOOLEAN MODE);

~ 是我们熟悉的异或运算符。返回的记录必须包含apple,但是如果同时也包含banana会降低权重。但是它没有 +apple -banana 严格,因为后者如果包含banana压根就不返回。

代码如下

复制代码

SELECT * FROM articles WHERE MATCH (title,body)

AGAINST ('+apple +(>banana

返回同时包含apple和banana或者同时包含apple和orange的记录。但是同时包含apple和banana的记录的权重高于同时包含apple和orange的记录。

linux中mysql中文全文搜索 .

代码如下

复制代码

centos6

xampp1.7.7

mysql5.5

# /opt/lampp/bin/mysql -uroot -ppassword

mysql> SHOW VARIABLES LIKE 'plugin_dir';

插件路径:/opt/lampp/lib/mysql/plugin

# wget http://mysqlcft.googlecode.com/files/mysqlcft-1.0.0-x86_64-bin.tar.gz

# tar zxvf mysqlcft-1.0.0-x86_64-bin.tar.gz

# cp mysqlcft.so /opt/lampp/lib/mysql/plugin

# /opt/lampp/bin/mysql -uroot -ppassword

mysql> INSTALL PLUGIN mysqlcft SONAME 'mysqlcft.so';

mysql> SELECT * FROM mysql.plugin;

mysql> SHOW PLUGINS;

ALTER IGNORE TABLE articles ADD FULLTEXT INDEX cnFullIndex (title,body) WITH PARSER mysqlcft;

SELECT * FROM articles WHERE MATCH(title,body) AGAINST ('北京' IN BOOLEAN MODE

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值