zoukankan      html  css  js  c++  java
  • 全文本搜索

    定义:
            全文本搜素是MyISAM存储引擎才具有的功能,主要针对长文本进行良好程度搜索。它的主要功能大概有:快速高效地搜索指定列,而且能提供一种智能化的结果,有查询扩展搜索和布尔文本搜索功能。
     
    使用方法:
    (1)启动全文本搜索:在创建表时,加入FULLTEXT(字段),例子如下:
    CREATE TABLE productor
    (
      note_id int               NOT NULL,
      prod_name char(10)        NOT NULL,
      note_data datatime        NOT NULL,
      note_text text            NULL,
      PRIMARY KEY(note_id)
      FULLTEXT(note_text)
    )ENGINE=MyISAM;
    在定义FULLTEXT索引列后,MYSQL会自动对其进行维护,在数据库变更后自动更新。
     
    (2)进行全文本搜索:在select中的where语句中,加入Match(指定列字段)和Aginst(搜索表达式)。例子如下:
    SELECT note_text
    FROM productor
    WHERE Match(note_text) Aginst('rabbit'); 
    传给Match的列字段必须与FULLTEXT中的列字段相同,而且全文本搜索不区分大小写,返回结果按照良好程度排序(如rabbit先出现的行优先级高)
     
    (3)使用查询扩展搜索:在Against的搜索表达式后,加入WITH QUERY EXPANSION。这样的话,能搜索出与表达式相关的结果,而非精确搜索。
    SELECT note_text
    FROM productor
    WHERE Match(note_text) Against('rabbit' WITH QUERY EXPANSION);
     使用查询扩展,增加了得到的返回结果行数,使得一些与rabbit相关的行也被搜索出来。
     
    (4)使用布尔文本搜索:在Against的搜索表达式后,加入IN BOOLEAN MODE。这样的话,能丰富搜索表达式,如增加要排斥的词,词优先级等。
    SELECT note_text
    FROM productor
    WHERE Match(note_text) Against('+(>rabbit) +(<success) -rope*' IN BOOLEAN MODE);
        使用布尔文本搜索,上式的搜索表达式被丰富了,+必须出现该词,-必须不包含该词,*词尾截断符,>增加词优先级,<减小词优先级。
  • 相关阅读:
    个人总结
    第三次个人作业——用例图设计
    结对项目——第二次作业
    结对项目——第一次作业
    第二次个人编程作业
    第一次个人编程作业
    个人总结
    第三次个人作业——用例图设计
    第二次结对作业
    第一次结对作业
  • 原文地址:https://www.cnblogs.com/ladawn/p/8591330.html
Copyright © 2011-2022 走看看