全文本搜索

仅在MyISAM引擎中支持全文本搜索

1.创建表时启用全文本搜索

e.g. CREATE TABLE productnotes

(

  note_id  int   NOT NULL AUTO_INCREMENT,

  prod_id  char(10)  NOT NULL,

  note_text  text  NULL,

  PRIMARY KEY(note_id),

  FULLTEXT(note_text)

)ENGINE=MyISAM

这里FULLTEXT一个列,也可以指定多个列,用逗号隔开

2.索引之后,使用Match()和Against()执行全文搜索

Match()指定要搜索的列,其值必须与FULLTEXT()定义中的相同

Against()指定要使用的搜索表达式

e.g.SELET note_text FROM productnotes

  WHERE Match(note_text) Against(‘rabbit‘)

3.查询扩展,找出相关的结果

e.g.SELET note_text FROM productnotes

  WHERE Match(note_text) Against(‘rabbit‘ WITH QUERY EXPANSION)

4.布尔文本搜索

全文本布尔操作符

+  包含,词必须存在

-  排除,词必须不出现

>  包含,而且增加等级

<  包含,而且减少等级

()  把词组成子表达式

~  取消一个词的排序值

*  词尾的通配符

""  定义一个短语

e.g.

SELECT note_text FROM productnotes

WHERE Match(note_text) Against(‘heavy -rope*‘ IN BOOLEAN MODE)

匹配包含heavy但不包含任意以rope开始的词的行

时间: 2024-10-08 10:24:09

全文本搜索的相关文章

【转】MYSQL入门学习之三:全文本搜索

转载地址:http://www.2cto.com/database/201212/173873.html 一.理解全文本搜索 www.2cto.com 1.MyISAM支持全文本搜索,而InnoDB不支持. 2.在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词.MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行.这样MySQL可以快速有效地决定哪些词匹配,哪些词不匹配,它们匹配的频率,等等. 二.使用全文本搜索 1.为了进行全文本搜索,必须索引被搜索的列,

数据库9:联结表 高级联结 组合查询 全文本搜索

第十五章联结表 Sql最强大的功能之一就是能在数据检索查询的执行中联结(join)表.联结是利用sql的select能执行的最重要的操作,能很好的理解联结及其语法是学习sql的一个极为重要的组成部分.   外键:外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系. 好处:供应商信息不重复,不浪费空间和时间,方便日后修改,一个表信息改动不影响另一个表的信息 联结是一种机制,使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行.   创建联结          

第十八章 全文本搜索

1.使用like和regexp进行文本的搜索有几个缺点: A:性能不高,通配符和正则表达式通常要求mysql尝试匹配表中所有行,由于行数多,这些搜索可能很耗时 B:使用正则表达式和通配符很难明确空值 C:虽然基于通配符和正则表达式的搜索提供了非常灵活的效率,但它们都不能提供一种智能化的选择结果 2.为了进行全文本搜索,必须索引被搜索的列,而且随着数据的改变不断重新索引.在索引之后select可与match()和against()一起使用. 3.一般在创建表时启用全文本搜索.create tabl

MySQL数据检索+查询+全文本搜索

[0]README 0.1)本文部分文字描述转自"MySQL 必知必会",旨在review"MySQL数据检索+查询+全文本搜索" 的基础知识: [1]使用子查询 1)查询定义:任何sql 语句都是查询.但此术语一般指 select语句:SQL 还允许创建子查询,即嵌套在其他查询中的查询: 2)利用子查询进行过滤(where子句,in子句) 2.1)可以把一条select语句返回的结果用于另一条select语句的where子句: 3)作为计算字段使用子查询 3.1)

第十八章:全文本搜索

@author: Tobin @date: 2019/11/4 16:03:15 MyISAM不支持全文本搜索,InnoDB支持. # 在创建表时启用全文本搜索 CREATE TABLE productnotes ( note_id int NOT NULL AUTO_INCREMENT, prod_id char(10) NOT NULL, note_date datetime NOT NULL note_text text NULL, PRIMARY KEY(note_id), FULLTE

MySQL.MATCH() AGAINST()全文本搜索

SELECT note_text -> FROM productnotes -> WHERE Match(note_text) Against('rabbit'); +----------------------------------------------------------------------------------------------------------------------+ | note_text | +------------------------------

mysql 文本搜索

全文本搜索 MySQL支持几种基本的数据库引擎,但并非所有的引擎都支持全文本搜索.两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,后者就不支持. 理解全文本搜索 在前面的学习中,我们都知道有两种方式来匹配文本.一种是使用like关键字来进行匹配,另外一种就是使用正则表达式来进行匹配. 虽然使用正则表达式就可以编写查找所需行的足够复杂的匹配模式.但是,这些存在几个重要的限制影响: 1.性能:通配符和正则表达式时尝试匹配表中所有行,而这些搜索极少使用了表索引,因此,相当慢 2.明

Linux命令学习:grep文本搜索工具

Mark: 本系列博文只是记录作者在Linux学习过程中的点点滴滴,新手可能参考,高手们就略过吧!!! Linux学习总结:grep文本搜索工具 功能:根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,并把匹配的行打印出来,它的全称为"Global Regular Expression Print",全局正则表达式,它默认是开放给所有用户. 语法格式:Grep [option] pattern file Option:命令选项,具体包含: -v: --revert-match

Linux中文本搜索工具“grep”命令详解

人生中应该有两次冲动,一次是轰轰烈烈的爱情,一次是说走就走的旅行.我属于第三种,轰轰烈烈的辞职然后马不停蹄的参加了马哥的linux面授班,两周时间内对linux有了些初步的了解,与此同时,两周内八天课程中的各种定义.概念.原理.命令由于量大.琐碎,也着实给我们这些小白一个下马威,即使每天11点撤退也觉得时间不够用.鉴于对自己的负责和马哥的作业要求,特对文本搜索工具grep写些使用指南,其中可能会有描述不确切或有偏颇之处,望及时指正. 开始--. 首先,要说一下grep是什么,用在什么地方. gr