码迷,mamicode.com
首页 > 其他好文 > 详细

全文本搜索

时间:2017-09-24 20:22:41      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:creat   创建表   note   text   _id   排除   多个   auto   primary   

仅在MyISAM引擎中支持全文本搜索

1.创建表时启用全文本搜索

e.g. CREATE TABLE productnotes

(

  note_id  int   NOT NULL AUTO_INCREMENT,

  prod_id  char(10)  NOT NULL,

  note_text  text  NULL,

  PRIMARY KEY(note_id),

  FULLTEXT(note_text)

)ENGINE=MyISAM

这里FULLTEXT一个列,也可以指定多个列,用逗号隔开

2.索引之后,使用Match()和Against()执行全文搜索

Match()指定要搜索的列,其值必须与FULLTEXT()定义中的相同

Against()指定要使用的搜索表达式

e.g.SELET note_text FROM productnotes

  WHERE Match(note_text) Against(‘rabbit‘)

3.查询扩展,找出相关的结果

e.g.SELET note_text FROM productnotes

  WHERE Match(note_text) Against(‘rabbit‘ WITH QUERY EXPANSION)

4.布尔文本搜索

全文本布尔操作符

+  包含,词必须存在

-  排除,词必须不出现

>  包含,而且增加等级

<  包含,而且减少等级

()  把词组成子表达式

~  取消一个词的排序值

*  词尾的通配符

""  定义一个短语

e.g.

SELECT note_text FROM productnotes

WHERE Match(note_text) Against(‘heavy -rope*‘ IN BOOLEAN MODE)

匹配包含heavy但不包含任意以rope开始的词的行

 

全文本搜索

标签:creat   创建表   note   text   _id   排除   多个   auto   primary   

原文地址:http://www.cnblogs.com/zhu-tingting/p/7588233.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!