Mysql利用match...against进行全文检索

在电商项目中,最核心的功能之一就是搜索功能,搜索做的好,整个电商平台就是个优秀的平台。一般搜索功能都使用搜索引擎如Lucene、solr、elasticsearch等,虽然这功能比较强大,但是对于一些小公司或者小的电商平台项目有点大材小用了,对于小项目我们可以采用折中的方法,使用ik+MySQL的搜索引擎进行查询,ik用于分词,mysql利用match和against函数进行模糊查询。先写下mysql的match和against的用法。

1 1、给mm_product表name,label字段添加fulltext索引。
2 ALTER TABLE `mm_product`
3 ADD FULLTEXT INDEX `name1` (`name`);
4 ALTER TABLE `mm_product`
5 ADD FULLTEXT INDEX ‘label1‘  (‘label‘);  
1 2、使用match和against函数
2 select * from mm_product where match(name,label) against(‘白猫 洗洁精‘);  
在SELECT的WHERE字句中用MATCH函数,索引的关键词用AGAINST标识,IN BOOLEAN MODE是只有含有关键字就行,不用在乎位置,是不是起启位置.
时间: 2024-08-03 23:01:39

Mysql利用match...against进行全文检索的相关文章

mysql 利用binlog增量备份,还原实例

mysql 利用binlog增量备份,还原实例 张映 发表于 2010-09-29 分类目录: mysql 一,什么是增量备份 增量备份,就是将新增加的数据进行备份.假如你一个数据库,有10G的数据,每天会增加10M的数据,数据库每天都要备份一次,这么多数据是不是都要备份呢?还是只要备份增加的数据呢,很显然,我只要备份增加的数据.这样减少服务器的负担. 二,启用binlog vi my.cnf log-bin=/var/lib/mysql/mysql-bin.log,如果是这样的话log-bin

mysql利用唯一索引去重

在生产环境中,有时候我们会遇到这样的问题,就是去掉数据库中2列值相同的数据,并且留下一条语句,解决这个问题可以利用唯一联合索引 创建测试表 CREATE TABLE `test03` (`id` INT(11) ,`uid` INT(11) DEFAULT NULL); INSERT INTO test03(id,uid) VALUES (1,1),(1,2),(1,1),(1,2),(1,1); select * from test03; id    uid 1    1 1    2 1  

MYSQL利用Navicat对含有Bold字段表进行导入导出

MYSQL中含有Blob字段是一件挺麻烦的事情,导出导入不方便.我介绍我是怎么做的. 1.在MYSQL的my.ini最后中添加一行配置max_allowed_packet = 100M,重启MYSQL服务 根据实际情况来定这个数值的大小,我这次表里面有82个mediumblob字段,所以设置为100M 2.用XML格式导出数据 3.选择用XML导入数据 选择表示一行的标签,我这里是RECORD. 4.耐心等待,如果有报错多少条处理失败是因为max_allowed_packet = 100M的值设

【转&参考】MySQL利用frm和idb文件进行数据恢复

MySQL利用frm和idb文件进行数据恢复 源MySQL现状: 版本:5.6.* 存储引擎:innodb存储引擎 要恢复数据库:skill 重点要恢复表:slot_value 已有的文件: 备份了所有物理文件(含ibdata1和数据库skill整个目录) 友情提示:最好找个自己的开发机,自己额外搭一套MySQL数据库,以免因为共用mysql数据库而影响其他人. 1. 搭建MySQL,如果这步骤有疑问,出门左转有yum搭建各种版本数据库的操作步骤:http://www.cnblogs.com/z

MySQL利用binlog恢复误操作数据

在人工手动进行一些数据库写操作的时候(比方说数据订正),尤其是一些不可控的批量更新或删除,通常都建议备份后操作.不过不怕万一,就怕一万,有备无患总是好的.在线上或者测试环境误操作导致数据被删除或者更新后,想要恢复,一般有两种方法. 方法一.利用最近的全量备份+增量binlog备份,恢复到误操作之前的状态,但是随着数据量的增大,binlog的增多,恢复起来很费时.方法二.如果binlog的格式为row,那么就可以将binlog解析出来生成反向的原始SQL 以下是利用方法二写的一个python脚本b

MySQL利用Navicat导出数据字典

这里算是一个小技巧 利用mysql的information_schema中的COLUMNS表 和navicat中的导出功能实现快速导出数据字典 CREATE TEMPORARYTABLE `COLUMNS` (   `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT'',   `TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT'',   `TABLE_NAME` varchar(64) NOT NULL DEFAULT 

MySQL 利用xtrabackup进行增量备份详细过程汇总

Xtrabackup下载.安装以及全量备份请参考:http://blog.itpub.net/26230597/viewspace-1465772/ 1,创建mysql备份用户 mysql -uroot --password="" -e"CREATE USER 'backup'@'192.168.%' IDENTIFIED BY '123456'"; mysql -uroot --password="" -e"GRANT RELOAD,

mysql利用init-connect增加访问审计功能的实现

mysql的连接首先都是要通过init-connect初始化,然后连接到实例. 我们利用这一点,通过在init-connect的时候记录下用户的thread_id,用户名和用户地址实现db的访问审计功能. 实现步骤 1.创建审计用的库表. 为了不与业务的库冲突,单独创建自己的库: #建库表代码 create database db_monitor ; use db_monitor ; CREATE TABLE accesslog ( thread_id int(11) DEFAULT NULL,

mysql利用atlas进行读写分离时,一直走主库的问题

项目中,利用atlas对mysql数据库进行了读写分离. 当时配置了去从库读数据. 当用数据库工具连接代理测试时,一切正常. 当在项目中使用框架mybatis连数据库时,却都直接去主库读写数据了. 自己写个main方法 用jdbc连接也是正常的.一用mybatis框架就不正常了,难道atlas对mybatis不支持吗? 于是各种百度,谷歌... 最后发现原因:如果有事务存在的话,atlas就强制走主库.而这个方法类上偏偏添加了事务@Transactional 解决办法在方法上加上@Transac