MYSQL学习笔记(十四)使用全文本搜索

来源:互联网 发布:核冬天 知乎 编辑:程序博客网 时间:2024/05/23 07:24
1. 启用全文本搜索支持
在CREATE TABLE语句创建表时,使用FULLTEXT;也可在稍后指定(所有已有数据必须立即索引)
2. 进行全文本搜索
SELECT ——
FROM ——
WHERE Match(——) Against(‘——’);
Match指示针对指定的列进行搜索,Against指定其括号里的词作为搜索文本
传递给Match()的值必须与FULLTEXT()定义中的相同,如指定多列,需按顺序列出
全文搜索不区分大小写,除非使用BINARY方式
此搜索返回以文本匹配的良好程度排序的数据,在文本前面出现或次数多的等级高
3. 使用查询扩展
SELECT ——
FROM ——
WHERE Match(——) Against(‘——’ WITH QUERY EXPANSION);
查询拓展将进行两次全文本搜索,第一次找出与搜索条件匹配的行,第二次找出相关有用词的行,并按匹配程度排序
4. 布尔文本搜索
即使没有FULLTEXT索引也可使用布尔文本搜索
布尔方式需提供要匹配的词、要排斥的词、排列提示(词的重要程度)、表达式分组等
SELECT ——
FROM ——
WHERE Match(——) Against(‘——’  IN BOOLEAN MODE);
若Against后的空填heavy,与未指定布尔方式结果相同
若填heavy -rope*,仍然匹配heavy,但排除包含rope*(以rope开头的词)
5. 全文本布尔操作符
+ 包含,词必须存在
-     排除,词必须不出现
>   包含,而且增加等级值
< 包含,且减少等级值
() 把词组成字表达式(允许子表达式作为一组被包含、排除、排列等)
~ 取消一个词的排序值
* 词尾的通配符
“” 定义一个短语(匹配整个短语以便包含或排除这个短语)
示例: ‘rabbit bait’ 搜索匹配包含rabbit和bait中至少一个词的行
  ‘“”rabbit bait”’搜索匹配短语rabbit bait
  ‘>rabbit <carrot’增加前者等级,降低后者等级
  ‘+safe +(<combination)’搜索匹配safe和combination,降低后者等级
6. 全文本搜索的使用说明
(1) 索引全文本数据时短词(3个或3个以下字符)被忽略且从索引中排除,此数值可更改
(2) MYSQL带有一个内建的费用次(stopword)列表,全文本搜索总被忽略。若需要,可覆盖这个列表
(3) 许多词出现频率很高,无意义的词,若一词出现在50%以上的行,则将它作为一个非用词忽略。50%规则不用于布尔方式
(4) 如果表中行数少于三行,则全文本搜索不返回结果
(5) 忽略词中的单引号,如don’t索引为don’t
(6) 不具有词分隔符(包括日语和汉语)的语言不能恰当返回全文搜索结果
阅读全文
0 0
原创粉丝点击