zoukankan      html  css  js  c++  java
  • 第十八章 全文本搜索

    1.使用like和regexp进行文本的搜索有几个缺点:
    A:性能不高,通配符和正则表达式通常要求mysql尝试匹配表中所有行,由于行数多,这些搜索可能很耗时
    B:使用正则表达式和通配符很难明确空值
    C:虽然基于通配符和正则表达式的搜索提供了非常灵活的效率,但它们都不能提供一种智能化的选择结果
    
    2.为了进行全文本搜索,必须索引被搜索的列,而且随着数据的改变不断重新索引。在索引之后select可与match()和against()一起使用。
    
    3.一般在创建表时启用全文本搜索。create table语句接受fulltext子句如下:
    注意点:不要在导入数据时使用fulltext,而应该首先导入数据,然后定义fulltext,这样效率比较高
    
    4.在索引之后,使用match()指定被搜索的列,against()指定要使用的搜索表达式。
    传递给match的值必须与fulltext中定义的相同,而且若指定多个列,列的顺序也要正确
    全文本搜索的一个重要部分是对结果排序,具有较高等级的行先返回,文中词靠前的行的等级比词靠后的行高
    5.使用扩展查询(with query expansion):
    mysql对数据和索引进行两边扫描来完成搜索,首先找出与搜索条件匹配的所有行,其次mysql检查这些匹配行并选择所有有用的词,然后在进行一次全文本搜索,不仅使用原来的条件,而且还使用所有有用的词
    如上可知,扩展查询增加了返回的行数,但是也返回了一些没用的行
    
    6.布尔文本搜索(in boolean mode)
    以布尔方式可以提供如下内容:
    A:要匹配的词
    B:要排斥的词
    C:排列提示
    D:表达式分组
    E:其他内容
    +: 包含,词必须存在
    -: 排除,词必须不存在
    >: 包含,增加等级
    <: 包含,减少等级
    (): 把词组成表达式
    ~: 取消一个值的排序值
    *: 词尾通配符
    "": 定义一个短语,与单个词的列表不同,它将匹配整个短语

    7.布尔搜索注意点:
    在布尔方式中,不按等级值降序排序返回行,即只排列而不排序
    可以在非fulltext列中进行布尔搜索,但是效率很低
    
    8.全文本搜索说明:
    A:在索引全文本数据时,短词将被从索引中排除。短词定义为具有3个及以下的词(数目可更改)
    B:mysql带有一个内建的非用词列表,这些词在索引中总是被忽略(此表可被覆盖)
    C:如果一个词在行中出现的频率大于百分之50,则将其作为非用词进行忽略。此规则不用于布尔搜索中
    D:仅在myisam数据库引擎中支持全文本搜索
    E:对于汉语不能恰当的返回全文本搜索结果
    F:忽略词中的引号,如don't索引为dont
    

      

  • 相关阅读:
    ActiveMQ 5.15.12(2020年3月9日)
    Vert.x WebClient WebClientOptions
    第三方App接入微信登录
    Android Sutdio自带的代码检查工具analyze的使用
    WIN7系统有些文本乱码怎么办
    Visual Studio 打开程序提示仅我的代码怎么办
    WIN10平板 总是提示你需要管理员权限怎么办
    WIN10平板 如何修改网络IP地址为固定
    WIN10平板 如何设置不允许切换竖屏
    WIN10平板 如何关闭自动更新
  • 原文地址:https://www.cnblogs.com/szn409/p/6193871.html
Copyright © 2011-2022 走看看