MySQL学习笔记(八)

第九章 MySQL全文检索

   全文索引在mysql中是一个fulltext类型索引。fulltext索引可以在create table是或在之后
   使用alter table或create index在char、varchar或在text列上创建。
  
   对于大的数据库,将数据装在到一个没有fulltext索引的表中,然后在使用alter table(或
   create index)创建索引,这将是非常快的。将数据装在到一个已经有fulltext索引的表中,将是非常慢的。
  
   全文搜索通过math()函数完成。如:
  
   建表
   mysql->create table test(
        ->id int unsigned auto_increment not null primary key,
        ->title varchar(200),
        ->body text,
        ->fulltext(title,body)
        ->);
   加入数据
  
   模糊搜索:查找包含‘database’
   mysql->select * from articles
        ->where match(title,body) against('database');
   函数amtch()对照一个文本集(包含在一个fulltext索引中的一个或多个列的列集)
   执行一个自然语言搜索一个字符串。搜索字符串作为against()参数被给定。搜索以
   忽略字母大小写的方式执行。对于表中的每个记录行,match()返回一个相关性值。
   即,在搜索字符串与记录行在match()列表中指定的列的文本之间的相似尺度。
   当match()被使用在一个where子句中时,返回记录行被自动的以相关性从高到低的
   次序排序。相关性值是非负的浮点数字。零相关性意味着不相似。相关系的计算式基于:
   词在记录行中的数目、在行中唯一词的数目、在集中词的全部数目和包含一个特殊词的文档的数目。
   记录行以相似性递减的顺序返回。
  
   如果既没有where也没有order by子句,返回行是不排序的。
  
   mysql逻辑全文检索
  
   mysql也可以使用in bollean mode修饰语来执行一个逻辑全文检索。
   如下查询返回所有包含MYSQL但是不包含词yoursql的记录行。
  
   mysql->select * from articles where match(title,body)
        ->against ('+mysql -yoursql' in boolean mode);
       
   against 匹配串:
  
   apple banana 找至少包含上面此中的一个记录行
  
   +apple +banana 两个词均在被包含
  
   +apple macintosh 包含词‘apple’,但是如果同时包含‘macintosh’,它的排列将更高些
  
   +apple +baa    包含词‘apple’ 但是不包含‘baa’
  
   "some words" 可以包含“some words of wisdom”,但不是“some noise words”
        
 --------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值