mysql使用fulltext索引

使用fulltext索引

全文索引分为3种模式:自然语言模式、布尔模式、查询扩展模式
使用全文索引有以下特点:
1、这种索引只能在myisam数据表里创建。只能有char、varchar、text这几种类型的数据列构成。
2、全文索引将忽略常见的单词。常见指的是至少在一半的数据行里出现过。
3、全文索引将忽略一些常见的单词。如‘the’ ‘after‘ 'other’等。
4、太短的单词也会忽略。这个可以通过设置最小长度来改变。
5、全文索引对单词的定义是指:由字母、数字、撇号(it's)和下划线字符构成的字符序列。如full-blood这样的单词将被解释为full和           blood单词。
6、fulltext可以为一个或多个数据列创建。

先创建一个表格:
create table apothegm(attribution varchar(40),phrase text)engine=myisam;
alter table apothegm add fulltext(phrase),
  add fulltext(attribution),
  add fulltext(phrase,attribution);


假设已经插入的数据有
attribute phrase
John time as be grows old
Tom It is hard for 
Robert  for I light my candle from their torches for
......
fulltext使用:
一、自然语言模式
select * from apothegm where match(phrase) against('old');
结果为第二行记录。

select * from apothegm where match(attribution,phrase)against('for');
结果为第二、三行记录。

select * from apothegm where match(phrase)against ('hard for');
它会把hard for当做两个单独的单词,即搜索存在hard或者for的记录。
结果为第二、第三行记录。
-------------------------------------------------------------------------------------
二、布尔模式
布尔模式的特点:
50%规则不起作用了;
查询结果不再按照相关程度排序;
在搜索短语时,可以要求所有单词必须按照某种规定的顺序出现,数据行包含的单词按照给定的顺序排列,才能认为是一个匹配。

select * form apothegm where match(attribution,phrase)against(' "hard for" ' in boolean mode);
结果为第二行。

select * from apothegm where match(attribution,phrase)against('+for -hard' in boolean mode);
结果为第三行。

-----------------------------------------------------------------------------------
三、查询扩展模式
查询扩展模式分为两个阶段来搜索:第一遍搜索和普通的自然语言搜索一样,在这些搜索里找到相关程度最高的数据行里的单词将被用在第二阶段。这些数据行里的单词加上原来那些在第一阶段没被找到、但与第一阶段的检索结果有一定关系的数据行。
查询方法是在搜索字符串的后面加上with query expansion 短语。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值