mysql函数match_Mysql全文搜索match…against的用法 | 学步园

全文检索在 MySQL 中就是一个 FULLTEXT 类型索引。FULLTEXT

索引用于   MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在

CHAR、 VARCHAR 或 TEXT 列上创建。对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER

TABLE   (或 CREATE INDEX) 创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT

索引的表中,将是非常慢的。

1.使用Mysql全文检索fulltext的先决条件

表的类型必须是MyISAM

建立全文检索的字段类型必须是char,varchar,text

2.建立全文检索先期配置

由于Mysql的默认配置是索引的词的长度是4,所以要支持中文单字的话,首先更改这个.

*Unix用户要修改my.cnf,一般此文件在/etc/my.cnf,如果没有找到,先查找一下find / -name 'my.cnf'

在 [mysqld] 位置内加入:

ft_min_word_len     = 2

其它属性还有

ft_wordlist_charset = gbk

ft_wordlist_file = /home/soft/mysql/share/mysql/wordlist-gbk.txt

ft_stopword_file = /home/soft/mysql/share/mysql/stopwords-gbk.txt

稍微解释一下:

ft_wordlist_charset 表示词典的字符集, 目前支持良好的有(UTF-8, gbk, gb2312, big5)

ft_wordlist_file 是词表文件, 每行包括一个词及其词频(用若干制表符或空格分开,消岐专用)

ft_stopword_file 表示过滤掉不索引的词表, 一行一个.

ft_min_word_len     加入索引的词的最小长度, 缺省是 4, 为了支持中文单字故改为 2

3.建立全文检索

在建表中用FullText关键字标识字段,已存在的表用 ALTER TABLE (或 CREATE INDEX) 创建索引

CREATE fulltext INDEX index_name ON table_name(colum_name);

4.使用全文检索

在SELECT的WHERE字句中用MATCH函数,索引的关键词用AGAINST标识,IN BOOLEAN MODE是只有含有关键字就行,不用在乎位置,是不是起启位置.

SELECT * FROM articles WHERE MATCH (tags) AGAINST ('旅游' IN BOOLEAN MODE);

MySQL支持全文索引(Full-Text)

已经很久了,目前,fulltext是一种只适用于MyISAM表的一个索引类型,而且对定义索引列的数据类型也有限制,只能是以下三种的组合char、

varchar、text。fulltext可以在创建表的同时就一起定义好,或者在表创建完成之后,通过语句alter table或create

index来追加索引,总之先后的效果是一样的,但是两者的效率却是存在很大差异的,大量的实验证明,对于大数量的表来说,先加载数据再来定义全文索引的

速度要远远优于在一个已经定义好全文索引的表里面插入大量数据的速度。一定会问:这是问什么呢?其实,道理很简单,前者只需要一次性对你的索引列表进行操

作,排序比较都是在内存中完成,然后写入硬盘;后者则要一条一条去硬盘中读取索引表然后再进行比较最后写入,自然这样速度就会很慢。MySQL是

通过match()和against()这两个函数来实现它的全文索引查询的功能。match()中的字段名称要和fulltext中定义的字段一致,如

果采用boolean模式搜索,也允许只包括fulltext中的某个字段,不需要全部列出。against()中定义的是所要搜索的字符串以及要求数据

库通过哪种模式去执行全文索引的搜索查询。下面通过一个例子分别介绍一下fulltext所支持的3中搜索模式。

家用一下搜索引擎就会发现,分词的情况只是出现在当整词命中为0的情况下。

而具体怎样分词,大家可以参考一下baidu搜索试验结果:

·如果搜“徐祖宁宁”,结果为“徐祖”+“宁宁”。(搜人名的情况下,它可能有一个百家姓词典,自动将姓后第一个字归前)

·搜“徐宁愿”,结果为“徐宁愿”。(说明“宁愿”归“徐”所有。同上。因为徐是姓。)

·搜“徐祖宁愿”,结果为“徐祖”+“宁愿”。(因为“宁愿”是词,故“徐”只带“祖”。)

·搜“徐祖宁高”,结果为“徐祖宁”。(因为“宁高”不是关键字,所以“宁”归前词所有。而“高”可能因为是单字,为提高前词搜索效率故被省略。)

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

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

相关文章

华为手机可以安装python吗_何安装python2.6

由于机器上的python 版本比较高,需要安装一个低版本的python具体执行步骤:1. 使用如下命令下载到2.6版本wget http://www.python.org/ftp/python/2.6/Python-2.6.tgz2. 解压pythontar xzf Python-2.6.tgzcd Python-2.63. 编译安装python./configure --pr…

Linux串口编程

.串口概述 常见数据通信方式:并行通信,串行通信 UART的主要操作: >数据发送及接受 >产生中断 >产生波特率 >Loopback模式 >红外模式 >自动流控模式 串口参数的配置主要包括:波特率、数据位、停止位、流控协议…

[转]如何在.NET MVC中使用jQuery并返回JSON数据

本文转自:http://blog.sina.com.cn/s/blog_48e42dc90100xp1p.html 二、开始实践 - jQuery端 假设我们要从服务器端获取一个文章列表,并把文章条目显示在页面中,而加载的过程要用ajax实现,即实现异步加载。那么我们先来完成jquery向…

mysql查当前用户的的命令_mysql命令大全用户管理相关命令

grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。grant select on testdb.* to common_user’%’grant insert on testdb.* to common_user’%’grant update on testdb.* to common_user’%’grant delete on testdb.* to common_user’%’或…

ud分区删除工具_硬盘分区GPT分区怎么转MBR呢?硬盘分区GPT分区转MBR教程

很多用户的电脑预装的是win10系统,想要重装成win7系统。不过新电脑一般都是GPT分区,想要把win10重装成win7,首先需要将GPT分区转MBR。那么,硬盘分区GPT分区怎么转MBR呢?下面就让小编为大家带来硬盘分区GPT分区转MBR教程。提示:单…

串口

1. 5350串口可以设置阻塞模式,3352只能是非阻塞模式 2. termios结构体为全局变量或局部变量,5350分别为阻塞或非阻塞 3. termios结构体在使用前必须清0,否则会出现有时收不到数据的情况 4. termios结构体必须被设置,否则会出现发送…

python中的ix是啥_详谈Pandas中iloc和loc以及ix的区别

Pandas库中有iloc和loc以及ix可以用来索引数据,抽取数据。但是方法一多也容易造成混淆。下面将一一来结合代码说清其中的区别。1. iloc和loc的区别:iloc主要使用数字来索引数据,而不能使用字符型的标签来索引数据。而loc则刚好相反&#xff0…

mysql 结构体_mysql模块使用结构体生成数据库表,不识别long类型

windows环境:windows10,vs2017,编译器最新,支持c17.问题描述:例如结构体:struct test_create_table{//__int64 id; //可以long id; //不可以,编译报错string name;};REFLECTION(test_create_tab…

使用Preference保存设置

Android中有四种持久化数据的方法:SQLite数据库、文件存储、Preference、ContentProvider。 四种方法各有专攻,而其中Preference是以类似Map的键值对形式存储的,最适合用来保存用户个人设置之类的信息。 可以用一个xml文件来配置一个设置界面…

c语言如何编写mysql客户端_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...

#include #include #include #include #include #include #include #include "mydb.h"void sqldb(const char *src)//参数src为要执行的SQL语句{if ((strncmp(src, "select", 6) 0) || (strncmp(src, "SELECT", 6) 0)|| (strncmp(src, "s…

调用支付jsapi缺少参数package_iOS微信支付(Swift)

前言微信支付的iOS的Demo不言而喻,所有的参数都是后台生成传过来的,完全没参考价值,并且有的注意点文档上也没说,现在我就说一下微信支付开发中需要注意的地方项目配置把实例项目中的一下文件拖到项目中Control文件夹下的WXApiManager.h和WXApiManager.m…

尚未注册 OLE DB 访问接口 SQLNCLI10 7043 错误

与链接服务器的测试连接失败。 执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo) ------------------------------程序位置: 在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTy…

asterisk 支持 VP8 video编码 实现安卓的视频通话

1 :checkout Asterisk source code revision 373330 svn checkout -r 373330 http://svn.digium.com/svn/asterisk/trunk asterisk (下载最新asterisk版本) 2 :asterisk 上面需要打一个补丁支持 VP8 video编码 wget http://sipml5.googlecode.com/svn/trunk/aste…

【Flink SQL API体验数据湖格式之paimon】

前言 随着大数据技术的普及,数据仓库的部署方式也在发生着改变,之前在部署数据仓库项目时,首先想到的是选择国外哪家公司的产品,比如:数据存储会从Oracle、SqlServer中或者Mysql中选择,ETL工具会从Informa…

ai里为什么不能随意放大缩小_AI常见问题解答

1、在AI中,有没有和CD一样的调整文字间距的快捷键呀? 答:Alt+左右方向键移动箭头。 2、在AI中,如何像快速放大缩小编辑区域? 答:按住Alt滚动鼠标滚轮。 3、在AI中,如何设置圆角矩形的圆角大小? 答:点击圆角矩形工具,用鼠标点击画布,这里可以填。 4、在AI中,如何简单…

python归一化 增大差异_Python逻辑回归模型原理及实际案例应用

前言上面我们介绍了线性回归, 岭回归, Lasso回归, 今天我们来看看另外一种模型—"逻辑回归". 虽然它有"回归"一词, 但解决的却是分类问题目录1. 逻辑回归2. 优缺点及优化问题3. 实际案例应用4. 总结正文在前面所介绍的线性回归, 岭回归和Lasso回归这三种回…

上周热点回顾(6.17-6.23)

热点随笔: 各地IT薪资待遇讨论(潇洒一回) 这些年过上幸福生活的程序员(上篇)(飞扬青云) 一个线上运营着3000人的游戏,因为我不小心一个DROP DATABASE,全没了。 怎么办…

Boost学习之指针容器--pointer_container

有时,我们可能需要一个包含指针的容器.比如存放一些不可拷贝的对象或者想在容器里存放基类以实现多态.尽管我们可以直接定义存放指针的STL容器,不过这样并不方便,我们得处处小心,在清空或删除容器里的元素时我们要保证异常安全地回收指针所指向的对象,以防内存泄漏. 一个好的办…

libzdb 连接到mysql_MySQL 连接

MySQL 连接使用mysql二进制方式连接您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。实例以下是从命令行中连接mysql服务器的简单实例:[roothost]# mysql -u root -pEnter password:******在登录成功后会出现 mysql> 命令提示窗口&#xff…

python ios 坐标点击_python点击鼠标获取坐标(Graphics)

使用Python进行图像编程,要使用到Graphics库。下面列举出较常用的代码from graphics import *#设置画布窗口名和尺寸win GraphWin(hehe, 666, 666)#关闭画布窗口win.getMouse()win.close()#画点pt Point(100, 100)pt.draw(win)#画圆cir Circle(Point(200, 200), …