MySQL全文本搜索
启用全文本搜索支持
create table text(
-> id int not null auto_increment,
-> texts text null,
-> primary key(id),
-> fulltext(texts))engine=myisam;
fulltext(texts)指示对他进行索引,engine=myisam指示用myisam搜索引擎。最常用的两个引擎是MyISAM和InnoDB
进行全文本搜索
match()指定被搜索的列,against指定要使用搜索的表达式。match()中的列要与fulltext指定的相同,若有多个列,必须都列出他们且次序相同。
select texts from text where match(texts) against('new');
- 在索引全文本数据时,短词被忽略且从索引中排除。短词定义为具有3个或3个以下字符的词(可以更改)
- mysql带有一个内建的非用词表,这些词在全文本搜索中被忽略,
- mysql规定了一条50%规则,如果一个词出现在50%以上的行中,则将它忽略,不使用与in boolean mode
- 如果表中的行少于3行,全文本搜索不返回结果(因为每次词或者不出现,或者至少50%出现)
- 忽略词中的个单引号,如don‘t变为dont
- 不具有次分隔符(包括汉语和日语)的语言不能恰当返回搜索结果
使用扩展查询
放宽返回全文本搜索的结果的范围,假如想找到提到anvils的注释,注释中只有一个词包含anvils,还想找出其他相关的所有行,即使不包含anvils。
- 进行一个基本的全文本搜索
- 检查和匹配的行并选择所有有用的词
- 再次进行全文本搜索,不仅使用原来的条件,还是用所有用的词
select texts from text where match(texts) against('you' with query expansion);
使用布尔文本搜索
mysql全文本搜索的另一种形式,提供如下细节内容
- 要匹配的词
- 要排斥的词(如果某行包含这个词,则不返回该行)
- 特别提示词(某些词比其他词更重要,等级更好等)
- 表达式分组
及时创建表时没有指定fulltext也可以使用
不按等级降序返回
select note_text from productnotes where match(note_text) against('heavy -rope*' in boolean mode);
| 布尔操作符 | 说明 |
| + | 包含,词必须存在 |
| - | 排除,词必须不出现 |
| > | 包含,而且增加等级值 |
| < | 包含,而且降低等级值 |
| () | 把词组成子表达式(允许这些子表达式作为一个组被包含,排序,排列等) |
| ~ | 取消一个词的排序值 |
| * | 截断一个词,词尾的通配符 |
| "" | 定义一个短语,匹配整个短语 |
MySQL全文本搜索的更多相关文章
- 【转】MYSQL入门学习之三:全文本搜索
转载地址:http://www.2cto.com/database/201212/173873.html 一.理解全文本搜索 www.2cto.com 1.MyISAM支持全文本搜索,而Inn ...
- MySQL(十)操纵表及全文本搜索
一.创建表 MySQL不仅用于表数据操作,还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 创建表一般有如下两种方式: ①使用具有交互式创建和管理表的工具: ②直接使用MySQL语句操纵表 ...
- 《mysql必知必会》笔记2(子查询、联接、组合查询、全文本搜索)
十四:使用子查询 1:子查询是嵌套在其他查询中的查询. 2:需要列出订购TNT2的所有客户信息,需要下面几步: a:从orderitems表中检索出包含物品TNT2的所有订单号: b:根据上一步得出的 ...
- mysql全库搜索指定字符串
mysql全库搜索指定字符串 DELIMITER // DROP PROCEDURE IF EXISTS `proc_FindStrInAllDataBase`; # CALL `proc_FindS ...
- mysql 文本搜索
全文本搜索 MySQL支持几种基本的数据库引擎,但并非所有的引擎都支持全文本搜索.两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,后者就不支持. 理解全文本搜索 在前面的学习中,我 ...
- ElasticStack学习(九):深入ElasticSearch搜索之词项、全文本、结构化搜索及相关性算分
一.基于词项与全文的搜索 1.词项 Term(词项)是表达语意的最小单位,搜索和利用统计语言模型进行自然语言处理都需要处理Term. Term的使用说明: 1)Term Level Query:Ter ...
- [linux] grep 文本搜索工具
grep [option] pattern file Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular ...
- 【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安装ik分词器
系列文章:[建议从第二章开始] [ELK][docker][elasticsearch]1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安 ...
- grep文本搜索工具详解
############grep命令############这个命令属于文本处理三大命令之一,强大的文本搜索工具(贪婪模式)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达 ...
随机推荐
- nw.js的localStorage的物理储存位置
前言 因为在做美团外卖商家端的nw.js壳子项目,需要保证在壳子里面使用localStorage的数据可以持久化保存. 发现nw可以保存,即使删除应用重写打包也可以保存,所以解决了这个需求,但是还是需 ...
- STA/LTA方法
STA是用于捕捉地震信号的时间窗,因此STA越短,就对短周期的地震信号捕捉越有效:LTA是用于衡量时间窗内的平均噪声,STA/LTA就可以根据周围环境噪声程度自适应地调整其对于某一类型地震信号的敏感度 ...
- nginx配置文服
修改nginx.conf 添加如下内容 autoindex on; # 显示目录 autoindex_exact_size on; # 显示文件大小 autoindex_localtime on; # ...
- oracle概要文件profile详解
一.目的: Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该prof ...
- JavaWeb:c3p0配置问题-----java.sql.SQLException: Connections could not be acquired from the underlying database!
错误原因 c3p0的配置错误 错误显示 -classpath "D:\Program\Software\IntelliJIDEA\IntelliJ IDEA 2018.2.5\lib\ide ...
- python基础举例应用
将下述两个变量的值交换s1='alex's2='SB's1,s2=s2,s1print(s1,s2) 判断下述结果msg1='alex say my name is alex,my age is 73 ...
- 爬虫系列4:scrapy技术进阶之多页面爬取
多页面爬取有两种形式. 1)从某一个或者多个主页中获取多个子页面的url列表,parse()函数依次爬取列表中的各个子页面. 2)从递归爬取,这个相对简单.在scrapy中只要定义好初始页面以及爬虫规 ...
- 【Python】requests.post请求注册实例
#encoding=utf-8 import requests import json import time import random import multiprocessing from mu ...
- Invocation of init method failed; nested exception is java.text.ParseException: '?' can only be specfied for Day-of-Month or Day-of-Week.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cronTrigger' ...
- 【机器学习基础】SVM实现分类识别及参数调优(二)
前言 实现分类可以使用SVM方法,但是需要人工调参,具体过程请参考here,这个比较麻烦,小鹅不喜欢麻烦,正好看到SVM可以自动调优,甚好! 注意 1.reshape的使用: https://docs ...