美文网首页
全文本搜索

全文本搜索

作者: olivia_ong | 来源:发表于2016-11-15 21:14 被阅读0次

全文本搜索

  • 使用全文本(fulltext)搜索,MySQL不需要分别查看每个行,不需要分析和处理每个词。MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行,提高搜索效率。
  • 不是所有引擎都支持全文本搜索,常用的搜索引擎中MyISAM支持全文本搜索,InnoDB不支持。

使用全文本搜索

  • 在创建表时启用全文本搜索:
create table table_name
(
...
fulltext(column_name)//指定列,可以是多个列
)
  • 进行全文本搜索
select note_text
from productnotes
where match(note_text) against('rabbit');

传递给match()的值必须与FULLTEXT中的值相同,如果为多个列,则必须列出它们并且按照定义的顺序
可以根据等级对结果排序

select note_text,
       match(note_text) against('rabbit') as rank
from productnotes;

查询扩展

放宽所返回的全文本结果的范围

  • 搜索原理
    1.先进行一遍基本的全文本搜索,找出与条件匹配的行;
    2.MySQL检查这些行并选择所有有用的词;
    3.在进行一次全文本搜索,不仅使用原来的条件还是用所有找出的有用的词
  • 举个例子
select note_text
from productnotes
where match(note_text) against('anvils' with query expansion);

布尔文本搜索

  • 布尔方式的搜索可以在条件定义
    要匹配的词
    要排斥的词
    排列提示(提示某些词比较重要)
    表达式分组
    其他
  • 布尔文本搜索条件中的操作符
    +:包含,词必须出现
    -:排斥,词必须不出现
    ‘>’:包含,并且增加等级
    <:包含,并且减少等级
    ():将词组成子表达式(允许这些子表达式作为一个组被包含、排除、排列等)
    ~:取消一个词的排序值
    *:词尾的通配符
    " ":定义一个短语(匹配时匹配整个短语)
  • 举例说明
    包含heavy并且不包含任何一rope开头的词
select note_text
from productnotes
where match(note_text) against('heavy -rope*' 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);

搜索safe和combination,降低后者的等级

select note_text
from productnotes
where match(note_text) against('+safe +(<combination)' in boolean mode);

相关文章

  • Linux常用指令---grep(转)

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全...

  • 文本搜索

    搜索包含关键字的行 会将所有包含关键字的行均输出,有时候只需要输出匹配的最后几行: 当然,我们可以在grep 后面...

  • 文本搜索

    To perform text search, MongoDB uses a text index and the...

  • 本地工具

    文本编辑器:EditPlus 文本编辑器,常用于文本编辑、转码、搜索、Hex查看。尤其是文本搜索,可以查询所有子文...

  • mongodb文本搜索

    这几天做app,绕不开搜索,在没有看mongodb文档的情况下,胡思乱想了半个小时该怎么处理文本搜索,没想到官网对...

  • 全文本搜索

    全文本搜索 使用全文本(fulltext)搜索,MySQL不需要分别查看每个行,不需要分析和处理每个词。MySQL...

  • Mongodb文本搜索

    近日用mongodb做文本搜索遇到一个问题。针对国外的人的姓名搜索,之前的中文名完全匹配的搜索不能用了。 比如我们...

  • Linux命令 - grep

    grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 1、基本用法,在文本中搜索一...

  • iOS --- searchBar模糊搜索

    模糊搜索的实现思路:当搜索框开始编辑时对搜索框中的文本与后台给的资源相对比,包含搜索文本的展示在tableview...

  • Linux文本搜索:grep

    文本搜索:grep Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找,如果...

网友评论

      本文标题:全文本搜索

      本文链接:https://www.haomeiwen.com/subject/jldlpttx.html