MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持

背景:搞个个人博客的全文搜索得用like啥的,现在mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索了,刚查了下目前版本号都到MySQL Community Server 5.6.19 了,所以,一些小的应用可以用它做全文搜索了,像sphinx和Lucene这样偏重的、需要配置或开发的,节省了成本。

这儿有一个原创的Mysql全文搜索的文章, mysql的全文搜索功能:
http://blog.csdn.net/bravekingzhang/article/details/6727541

基于mysql全文索引的深入理解:
http://www.jb51.net/article/37738.htm

为什么要设置 Mysql 的 ft_min_word_len=1:
http://blog.csdn.net/shilian_h/article/details/6215537


MySQL 全文搜索支持简述:
从MySQL 4.0以上 myisam引擎就支持了full text search 全文搜索,在一般的小网站或者blog上可以使用这个特性支持搜索。
那么怎么使用了,简单看看:
1.创建一个表,指定支持fulltext的列
  CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR(200),
    body TEXT,
    FULLTEXT (title,body)
  );
2.插入一些数据作为测试
  INSERT INTO articles (title,body) VALUES
    ('MySQL Tutorial','DBMS stands for DataBase ...'),
    ('How To Use MySQL Well','After you went through a ...'),
    ('Optimizing MySQL','In this tutorial we will show ...'),
    ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
    ('MySQL vs. YourSQL','In the following database comparison ...'),
    ('MySQL Security','When configured properly, MySQL ...');
3.select查询fulltext的列 
  SELECT * FROM articles
    WHERE MATCH (title,body) AGAINST ('database');
查询结果:
  5        MySQL vs. YourSQL        In the following database comparison ...    
  1        MySQL Tutorial               DBMS stands for DataBase ...   
全文查询中的boolean语句, + -跟普通的搜索引擎语法一样
  SELECT * FROM articles WHERE MATCH (title,body)
     AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
innodb不支持fulltext,当然可以使用http://sphinxsearch.com/ sphinx来dump数据库数据支持全文搜索。
原文地址:http://www.javaarch.net/jiagoushi/700.htm

后记,MySQL 5.6.4里才添加了InnoDB引擎的Full-Text索引支持,或用张宴兄弟的基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计: http://blog.s135.com/post/360/
Q:
我想在查询时使用MATCH(...) AGAINST(...)语法,但是我的数据表引擎是Innodb,当我CREATE FULLTEXT INDEX的时候,返回提示The used table type doesn't support FULLTEXT indexes。
我想问的是在innodb引擎中是否不能使用FULLTEXT引擎?有什么替代品吗?可以使用MATCH(...) AGAINST(...)语法吗?
A:
MySQL 5.6.4里才添加了InnoDB引擎的Full-Text索引支持。
不能升级MySQL版本的话:
推荐用Lucene(ElasticSearch比较容易部署)或Sphinx这样的第三方解决方案。
innodb 不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。
sphinx 是一个开源软件,提供多种语言的API接口,可以优化mysql的各种查询。
如果这个表更新不频繁,查询量不大,又赶时间,可以用触发器、定时任务或者其他类似的DBA技巧创建支持全文索引的镜像表(如MyISAM类型的),代码改动会小一些。
MySQL5.6 InnoDB FULLTEXTIndexes研究测试:
http://blog.csdn.net/zyz511919766/article/details/12780173

mysql 5.6.4支持nosql:
在最新的 mysql-5.6.4-labs-innodb-memcached 中,实现了简单的给予 key/value的nosql功能,其主要原理
就是mysqld除了监听3306端口之外,同时监听11211端口。使mysqld和memcached服务处在同一进程中。通过
数据库、表与字段的映射,将缓存在memcache的数据插入到映射的表中。安装包中提供了三张表:containers
cache_policies和config_options,表containers就提供了映射关系,表cache_policies提供了三种存储方式(
innodb_only数据只插入表,cache_only只缓存数据,caching即缓存数据又插入表),表config_options中提供
了一个默认分隔符“|”,就是说如果在表containers的values字段中定义了col1,col2...字段,那在设置缓存值时就
可以用val1|val2的形式,这样将会把val1插入到col1,val2插入到col2。

来自:http://blog.csdn.net/sunny5211/article/details/7357893






这个不能算是全文搜索, 只是传统的全表搜索。如果使用mysql的全文检查,在200万数据集上,不可能用那么长的时间的。
使用mysql全文检索的方法如下:
1. 配置mysql参数ft_min_word_len=1
在数据表的文本字段中创建fulltext索引。
2.将原始文本进行分词(处理成按空格分隔的字符串),可使用一些开源的分词模块实现。 再导入到mysql数据表中
3. 使用mysq select * from tb1 where title match'词语' 进行检索。
来自:http://www.oschina.net/question/123890_133459

作者:justwinit@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://www.justwinit.cn/post/7253/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

转载于:https://www.cnblogs.com/Yongzhouunknown/p/4814853.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建基于Jenkins的CI服务器

安装Jenkins和创建任务这些操作网上一搜一大把,这里就没必要写了,直接就开始编译、单元测试,覆盖,git提交触发构建,构建失败发送给提交人邮件。 因为项目比较复杂,为了懒省事我直接在CI服务器上安装了visua…

php打补丁,PHPMailer库打补丁后漏洞仍然存在,怎么解?

开源PHPMailer库被披露存有一个严重的远程代码执行漏洞。这个漏洞在被修补后,又进行了二次修复,因为第一次没有充分解决问题。那么,这个漏洞是如何工作的?为什么原始补丁没有解决问题?Michael Cobb:代码库和…

Ubuntu下安装jdk经验分享

Ubuntu下安装jdk经验分享http://www.jb51.net/article/55131.htm转载于:https://www.cnblogs.com/kangtuohongwai/p/6002555.html

BZOJ 1270: [BeijingWc2008]雷涛的小猫( dp )

简单的dp..dp(i,j) max(dp(x,y))cnt[i][j], (x,y)->(i,j)是合法路径.设f(i) max(dp(x,y))(1≤x≤N, 1≤y≤i), g(i,j) max(dp(i, k))(1≤k≤j)那么dp(i,j) max(f(jdelta), g(i,j1))cnt[i][j]. 递推即可. 时间复杂度O(NH)----------------------------------------------…

【校招面试 之 C/C++】第12题 C++ 重载、重写和重定义

1、成员函数重载特征: a.相同的范围(在同一个类中); b.函数名字相同; c.参数不同(参数个数不同或者参数类型不同,但是返回值不同不能使重载); d.virtual关键字可有可无…

mac php5.6.30与php7共存,认识Homebrew以及在Mac上同时安装PHP5及PHP7

Homebrew几乎是Mac上必备的软件,用于下载安装和管理其他软件。尤其对于程序员,讲真,本人到现在仍然不知道在Mac上如何不借助Homebrew来搭建php-apache-mysql开发环境。认识HomebrewHomebrew是一个开源项目,据说它的作者曾经去谷歌…

POJ 1141

题意&#xff1a;给出一个表达式的子序列&#xff0c;要你填充这个序列&#xff0c;保证最终形成的序列长度最短&#xff0c;也就是添加的括号最少 这个子序列要遵循括号匹配的原则。 分析&#xff1a;转移方程dp[i][j]min(dp[i][k],dp[k1][j]).i<k<j.dp[1][1]1; dp[i][j…

PHP array_count_values() 函数用于统计数组中所有值出现的次数。

定义和用法 array_count_values() 函数用于统计数组中所有值出现的次数。 本函数返回一个数组&#xff0c;其元素的键名是原数组的值&#xff0c;键值是该值在原数组中出现的次数。 语法 array_count_values(array) 参数 描述 array 必需。规定输入的数组。 例子 <?php …

SpringDay01

一&#xff1a;什么是Spring。 简单的理解就是一个可以装web层&#xff0c; service层&#xff0c; dao层&#xff0c;这三层对象的容器。 二&#xff1a;Spring搭建 1.导包&#xff1a;核心四个包和log4j两个包 2.注册对象&#xff1a;User类 3.书写配置注册对象到容器 a>导…

bom_clear.php,thinkphp清除BOM方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼在utf-8编码文件中BOM在文件头部&#xff0c;占用三个字节&#xff0c;用来标示该文件属于utf-8编码&#xff0c;现在已经有很多软件识别bom头&#xff0c;但是还有些不能识别bom头&#xff0c;比如PHP就不能识别bom头&#xff0c;…

(算法)Trapping Rain Water I

题目&#xff1a; Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. For example, Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6. 思路&#xff1a; 题目的意思是说&…

字符数组拷贝与strcpy函数

代码&#xff1a; char str1[10],str2[10];for (int i0;i<10;i){str1[i]a;}strcpy(str2,str1); 让找出错误的地方。 先来看下strcpy函数&#xff1a; 使用格式&#xff1a;char* strcmp&#xff08;char* buffer&#xff0c;char*str&#xff09;功 能: 把从str地址开始且含…

java中的NAN和INFINITY

2019独角兽企业重金招聘Python工程师标准>>> java浮点数运算中有两个特殊的情况&#xff1a;NAN、INFINITY。 1、INFINITY&#xff1a; 在浮点数运算时&#xff0c;有时我们会遇到除数为0的情况&#xff0c;那java是如何解决的呢&#xff1f; 我们知道&#xff0c;在…

php框架tp5工作流程,tp5框架流程

之前没怎么了解过&#xff0c;但用过TP3.2.网上查了下说是区别很大&#xff0c;特此记录下。流程&#xff1a;1.入口文件默认是 public目录下的index.php// 定义应用目录define(APP_PATH, __DIR__ . /../application/);// 加载框架引导文件require __DIR__ . /../thinkphp/star…

有移动规则2

import org.robochina.airobot.tank.*; import org.robochina.math.*; import java.awt.geom.*; import java.util.*;/*** 这个类对应一个机器人&#xff0c;根据需要实现相应的Action处理函数&#xff0c;* 就可以订制自己的机器人。*/ public class Text extends SimpleRobot…

Troubleshooting(三):网络

2019独角兽企业重金招聘Python工程师标准>>> 前言 在 Troubleshooting 过程中&#xff0c;检查完进程信息后&#xff0c;接下来就是排查网络情况的时候了&#xff0c;初略翻过《TCP/IP 详解卷一&#xff1a;协议》这本书&#xff0c;简直跟看《深入理解 Linux 内核》…

SqlServer 备份还原教程

看了众多教程&#xff0c;自己也写个增强记忆&#xff0c;错误地方麻烦指出。 ———————————————————————-备份——————————————————————– 1.打开数据库&#xff0c;成功连接 2.找到要备份的数据库&#xff0c;图中演示备份数据库te…

php通过实现excel导入,php实现excel导入数据

表单页面 if($_POST [import]"导入数据 "){$leadExcel$_POST[leadExcel];//echo $leadExcel;die;if($leadExcel "true"){//echo "OK";die();//获取上传的文件名$filename $_FILES[inputExcel][name];//上传到服务器上的临时文件名$tmp_name $…

深入理解计算机系统----读书笔记

第二部分 信息的表示和处理 信息存储&#xff1a; 二进制&#xff08;0101001&#xff09;&#xff0c; 八进制&#xff0c;十六进制&#xff08;0x32FD&#xff09; 字&#xff08;word size&#xff09;指明整数和指针数据的标称大小&#xff08;normal size&#xff09;&…

FiddlerScript-常用总结

没有用过Fiddler的人应该对FiddlerScript没啥感触&#xff0c;我是真心觉得FiddlerScript对测试有一定的帮助哈。在web前端开发过程中&#xff0c;Fiddler是最常用的一款调试工具&#xff0c;那对于测试来说&#xff0c;对测试来说也是一大利器。在大多数情况下&#xff0c;通过…