zoukankan      html  css  js  c++  java
  • MySQL下全文索引

    一种特殊的索引,它会把某个数据表的某个数据列出现过的所有单词生成一份清单。
    alter table tablename add fulltext(column1,column2)
    只能在MyISAM数据表中创建

    少于3个字符的单词不会被包含在全文索引里,可以通过修改my.cnf修改选项

    ft_min_word_len=3

    重新启动MySQL服务器,用

    repair table tablename quick 为有关数据表重新生成全文索引
    select * from tablename

    where match(column1,column2) against('word1 word2 word3')>0.001
    match ... against 把column1,column2数据列中至少包含word1,word2,word3三个单词之一的数据记录查找到,在关键字match后的数据列必须 跟创建全文索引的数据列相同,检索词不区分大小写和先后顺序,少于3个字符的单词通常被忽略。match... against ...表达式返回一个浮点数作为它本身的求值结果,这个数字反映了结果记录与被检索单词的匹配程度。如果没有匹配到任何记录,或者匹配到的结果记录太多反 而被忽略,表达式将返回0,表达式>0.001的作用是排除match的返回值太小的结果记录。
    select *,match(column1,column2) against ('word1 word2 word3') as mtch

    from tablename

    having mtch>0.01

    order by mtch desc

    limit 5
    找出最匹配的5条记录,在where字句中不能使用假名,所以用having

     

    布尔全文搜索的性能支持以下操作符:

      • +word:一个前导的加号表示该单词必须 出现在返回的每一行的开头位置。

     

      • -word: 一个前导的减号表示该单词一定不能出现在任何返回的行中。

     

      • (无操作符):在默认状态下(当没有指定 + 或–的情况下),该单词可有可无,但含有该单词的行等级较高。这和MATCH() ... AGAINST()不使用IN BOOLEAN MODE修改程序时的运作很类似。

     

      • > <这两个操作符用来改变一个单词对赋予某一行的相关值的影响。 > 操作符增强其影响,而 <操作符则减弱其影响。请参见下面的例子。

     

      • ( )括号用来将单词分成子表达式。括入括号的部分可以被嵌套。

     

      • ~word:一个前导的代字号用作否定符, 用来否定单词对该行相关性的影响。 这对于标记“noise(无用信息)”的单词很有用。包含这类单词的行较其它行等级低。

     

      • word* :搜索以word开头的单词,只允许出现在单词的末尾

     

      • "word1 word" :给定单词必须出现在数据记录中,先后顺序也必须匹配,区分字母大小写



    select * from tablename

    where match(column1,column2) against ('+word1 +word2 -word3' in boolean mode')
    布尔检索只能返回1或者0,不再返回表示匹配程度的浮点数

    全文索引的缺陷:

      • 数据表越大,全文索引效果好,比较小的数据表会返回一些难以理解的结果。

     

      • 全文检索以整个单词作为匹配对象,单词变形(加上后缀,复数形式),就被认为另一个单词。

     

      • 只有由字母,数字,单引号,下划线构成的字符串被认为是单词,带注音符号的字母仍是字母,像C++不再认为是单词

     

      • 不区分大小写

     

      • 只能在MyISAM上使用

     

      • 全文索引创建速度慢,而且对有全文索引的各种数据修改操作也慢
  • 相关阅读:
    AcWing 157. 树形地铁系统 (hash判断树同构)打卡
    AcWing 156. 矩阵 (哈希二维转一维查询)打卡
    AcWing 144. 最长异或值路径 01字典树打卡
    AcWing 143. 最大异或对 01字典树打卡
    AcWing 142. 前缀统计 字典树打卡
    AcWing 139. 回文子串的最大长度 hash打卡
    AcWing 138. 兔子与兔子 hash打卡
    常用C库函数功能及用法
    编程实现C库函数
    C语言面试题5
  • 原文地址:https://www.cnblogs.com/mguo/p/3023610.html
Copyright © 2011-2022 走看看