zoukankan      html  css  js  c++  java
  • 《mysql必知必会》学习_第18章

    第18章 全文本搜索

    P121  #创建一个新表,对表的列进行定义,定义之后,MySQL自动维护该索引#

    create table productnotes

    (

    note_id  int   NOT NULL  AUTO_INCREMENT,

    prod_id char(10)  NOT NULL  ,

    note_date datetime  NOT NULL ,

    note_text text NULL,

    PRIMARY KEY(note_id),

    FULLTEXT (note_text )

    )ENGINE=MyISAM;

    P121 进行全文搜索 #Match(列)和Against(指定要搜索的文本) ##搜索不区分大小写##

    select note_text from productnotes where March(note_text) Against('rabbit');   #定义指定的列是note_text,要搜索的文本是Rabbit 。#

     P122 相当于like语句,在rabbit前后都加上符号通配符%

    select note_text from productnotes where note_text LIKE '%rabbit%';  #表示检索note_text列中含有ranbbit 的值 #

     P123  检索的词在该文本(该列的某个值)越靠前,等级就越高,较高的行先返回。

    select note_text ,March(note_text) against('rabbit') as rank from productnotes ;#没有where语句,所以没有限制条件语句,所有的行都会被返回, March(note_text) against('rabbit')建立了一新列rank,此列计算出了每行的等级值,词的数目,唯一词的数目,整个索引中词的总数以及包含的该词的行的计算,从而定义了这个结果的排列#

     P125

    select note_text from productnotes where Match(note_text) Against('anvils');   #简单的全文检索,检索note_text列含有anvils的行。#

    select note_text from productnotes where Match(note_text) Against('anvils' with query expansion); #查询扩展,第一行含有anvils,第二行起没有anvils,但第二行含有第一行的2个词,该2词位置还靠前,所以被扩展到了,而且优先级还第二高。   #

     select note_text from productnotes where Match(note_text) Against('heavy-rope*' in boolean mode);  #搜索关于heavy的行,排除含有rope的所有词和行 #

      

    select note_text from productnotes where Match(note_text) Against('+rabbit+bait' in boolean mode) #匹配词含有rabbit和bait,句子同时出现这两个词为优先级,(书本里面说检索的结果要同时含有这两个词,但是下面的结果中第二个语句里面只是存在rabbit,没有bait???)#

     select note_text from productnotes where Match(note_text) Against('rabbit bait' in boolean mode);  #存在一个rabbit、bait其中一个词就可以了#

    select note_text from productnotes where Match(note_text) Against('”rabbit bait“' in boolean mode); #rabbit bait是一个词组,要一起出现才能被检索到#

    select note_text from productnotes where Match(note_text) Against('>rabbit<bait' in boolean mode) # 增加前者的等级,降低后者的等级,r b >b r;r>b;r>b r (同时出现r时候的r的位置是排序的关键)#

    select note_text from productnotes where Match(note_text) Against('+safe+(<combination) ' in boolean mode) #搜索匹配词safe和combination,降低后者的等级???(明结果明是可以单独出现)#

     

  • 相关阅读:
    Java8 Stream Function
    PLINQ (C#/.Net 4.5.1) vs Stream (JDK/Java 8) Performance
    罗素 尊重 《事实》
    小品 《研发的一天》
    Java8 λ表达式 stream group by max then Option then PlainObject
    这人好像一条狗啊。什么是共识?
    TOGAF TheOpenGroup引领开发厂商中立的开放技术标准和认证
    OpenMP vs. MPI
    BPMN2 online draw tools 在线作图工具
    DecisionCamp 2019, Decision Manager, AI, and the Future
  • 原文地址:https://www.cnblogs.com/qiyuanjiejie/p/9439772.html
Copyright © 2011-2022 走看看