SQL Server 全文搜索 配置、查询初体验

一、使用SQL Server全文搜索配置

  要使用SQL Server的全文搜索服务,需要进行如下配置。

  1、开启全文搜索服务:

  

  2、开启数据库的全文索引功能:

  --开启数据库的全文搜索功能
  EXEC sp_fulltext_database ‘enable‘;

  3、创建全文索引目录:

  --创建全文索引目录
  CREATE FULLTEXT CATALOG IndexCatalog
     ON FILEGROUP [PRIMARY]
     IN PATH ‘E:\SQLServerIndex‘
     AS DEFAULT

  4、创建唯一索引:

  --创建唯一索引
  CREATE UNIQUE NONCLUSTERED INDEX IndexContent ON Article(ArticleContent ASC)

  5、创建全文索引:

  --创建全文索引
  CREATE FULLTEXT INDEX ON Article
  (ArticleContent)
  KEY INDEX IndexContent ON IndexCatalog    --IndexContent是唯一索引名

二、使用全文搜索

  CONTAINS搜索方式

  1.简单词搜索 - 搜索一个或多个特定的词或短语。词可以包括一个或多个字符,中间没有空格或标点。短语可以由空格分隔的多个词组成,但词之间可以有标点也可以没标点:

  --搜索文章内容含有张三或者李四的记录
  SELECT * FROM Article WHERE CONTAINS(ArticleContent,‘"张三" OR "李四"‘)

  2.前缀词搜索的方式 - 搜索指定文本开头的词或短语,前缀词的搜索方式主要是用在搜索英文中,例如搜索以“do”开头的单词,则可以将doctor、document、download等单词都搜索出来。

  --搜索文章内容中含有以‘认‘开始的词的记录
  SELECT * FROM Article WHERE CONTAINS(ArticleContent,‘"认*"‘)    --认为,认识

  3.加权词搜索的方式 - 给多个搜索条件加上权值,加权值越高的记录排在越前面,当以多个字符串作为搜索条件搜索记录时,可以为不同的字符串加上一个加权值,这个加权值是介于0和1之间的数值,加权值越高的记录排在越前面。事实上在该SELECT语句的返回结果集里,并没有按加权值的大小来排序,因为WEIGHT不影响CONTAINS查询的结果,只会影响CONTAINSTABLE查询中的排序:

  --在CONTAINS搜索中,权重并不影响排序
  SELECT * FROM Article
  WHERE CONTAINS(ArticleContent,‘ISABOUT ("北京" weight(0.9),"上海"  weight(0.6),"广州"  weight(0.5))‘)

  4.邻近词搜索的方式 - 可以搜索与另一个词或短语相邻近的词或短语:

  --搜索文章内容中第二个词在第一个词附近的记录
  SELECT * FROM Article WHERE CONTAINS(ArticleContent,‘"张三" NEAR "李四"‘)

  FREETEXT搜索方式

  FREETEXT搜索方式与CONTAINS搜索方式相比,其搜索结果表现都十分不精确,因为FREETEXT的搜索方式是将一个句子中的每个单字拆分开进行搜索的。使用CONTAINS搜索方式搜索条件为“教育部”的记录,那么搜索出来的将是记录里包含“教育部”三个字符串的记录。

  --搜索文章内容中包含‘程‘字和‘社‘字的记录
  SELECT * FROM Article WHERE FREETEXT(ArticleContent,‘程社‘)    

  CONTAINSTABLE搜索方式

  1、CONTAINSTABLE基本搜索:

  --CONTAINSTABLE搜索文章内容中含有友谊的记录
  SELECT * FROM CONTAINSTABLE(Article,ArticleContent,‘友谊‘) as table1

  留意到返回中指包含了两个字段:

  

  其实就是CONTAINSTABLE表中的数据。

  2、CONTAINSTABLE返回所需列:

  --CONTAINSTABLE搜索返回所需列
  SELECT * FROM Article JOIN
    CONTAINSTABLE(Article,ArticleContent,‘"环境"‘,2) as table1
    ON Article.ArticleContent = table1.[KEY]
  ORDER BY table1.RANK DESC

  

  3、CONSTAINSTABLE按符合条件排序

  --按符合条件排序
  SELECT * FROM Article JOIN
      CONTAINSTABLE(Article,ArticleContent,‘ "泰国" NEAR "高铁" ‘,10) as table1
      ON Article.ArticleContent = table1.[KEY]
   ORDER BY table1.RANK DESC

  看到查询结果的确按符合条件进行了排序:

  

  4、CONSTAINSTABLE按按权值排序

  --权重值排序
  SELECT * FROM Article JOIN
  CONTAINSTABLE(Article,ArticleContent,
  ‘ISABOUT ("泰国" weight(0.9),
  "高铁"  weight(0.6),
  "环境"  weight(0.1))‘) AS TABLE1
  ON Article.ArticleContent = TABLE1.[KEY]
  ORDER BY TABLE1.RANK DESC

  结果按照权重值排序:

  

  使用FREETEXTTABLE搜索

  单个字搜索,但是多了参数可供使用:语法如下:

  FREETEXTTABLE (table , { column_name | (column_list) | * }
  , ‘freetext_string‘
  [ ,LANGUAGE language_term ]
  [ ,top_n_by_rank ] )

  示例:

  

  搜索image字段

  在SQL Server 2005的image类型的字段里,不仅仅是可以存储图形文件,还可以存储如可执行文件、音乐文件、文本文件等众多文件类型。SQL Server 2005支持对存储在image类型的字段里的一些文件的内容进行全文搜索,但在创建全文索引时必须指明存储在image字段里的文件的类型。

  SQL Server 2005支持对存储在image中的纯文本文件、网页文件、Word文件、Excel文件和PowerPoint文件的内容进行查询,其扩展名字段必须分别为txt、htm、doc、xls和ppt。全文索引创建完毕后,对image字段里的文件内容进行查询的方法与其他字段的查询方法是一样的:

  SELECT 编号,标题,文件,扩展名 FROM 文章 WHERE CONTAINS(文件,‘数据库‘)

三、小结与评价

  下面给出这个SQL Server全文搜索的常用SQL语句:

--开启数据库的全文搜索功能:
EXEC sp_fulltext_database ‘enable‘; --数据库启用全文索引
--关闭数据库的全文搜索功能:
EXEC sp_fulltext_database ‘disable‘; --数据库禁用全文索引

--如果你忘记了全文索引的目录、表、列创建过全文索引
EXEC sp_help_fulltext_catalogs    --全文索引目录
EXEC sp_help_fulltext_columns    --全文索引列
EXEC sp_help_fulltext_tables    --全文索引表

  感觉这个东西有点鸡肋的感觉,其中最大最大的限制就是,由于全文索引只能建在唯一索引列上,导致创建全文索引的列不能超过900个字节的长度,这个限制了它基本上不会被考虑了,因为连一篇文章都索引不了,只能用于一些非常小的字符串。

时间: 2024-10-10 02:58:20

SQL Server 全文搜索 配置、查询初体验的相关文章

SQL Server 全文搜索

SQL Server 的全文搜索(Full-Text Search)是基于分词的文本检索功能,依赖于全文索引.全文索引不同于传统的平衡树(B-Tree)索引和列存储索引,它是由数据表构成的,称作倒转索引(Invert Index),存储分词和行的唯一键的映射关系.倒转索引是在创建全文索引或更新全文索引时,由SQL Server自动创建和维护的.全文索引主要包含三种分析器:分词器(Word Breaker).词干分析器(stemmer)和同义词分析器.全文索引中存储的数据是分词及其位置等信息,分词

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

第1周 SQL Server 如何执行一个查询

原文:第1周 SQL Server 如何执行一个查询 大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要,因为接下来的培训中我们会以这些概念来加深我们对SQL Server的认识. 当我们执行一个查询时,在SQL Server中最重要的组件有哪些,下面这张图片可以给大家一个概观的认识. 可以看到,SQL Server内部分成了2个部分:关系引擎和存储

[译]SQL Passion Week 1: SQL Server如何执行一个查询

SQLpassion Performance Tuning Training Plan 个人学习翻译,如有谬误,请不吝指出,感谢.  Week 1: SQL Server如何执行一个查询   在我们进入SQL Server性能调优的繁杂细节之前, 我想先列举一下SQL Server如何执行一个查询(query)的结构, 这部分内容非常重要, 因为了解这些概念, 对我们以后的性能调优课程会理解的更加深刻. 下面的图为我们展示了SQL Server执行查询过程中所包含的几个主要组成部分: SQL S

在 SQL Server 2005 中配置数据库邮件

一.            SQL Server发邮件原理和组件介绍: 数据库邮件有4个组件:配置文件.邮件处理组件.可执行文件以及"日志记录和审核组件". l  配置组件包括: 1)数据库邮件帐户包含诸如SMTP服务器名.身份验证类型和电子邮件地址等. 2)数据库邮件配置文件是数据库邮件帐户的集合. l  邮件处理组件 要的数据库邮件组件就是刚才所说的数据库邮件主机数据库,默认是msdb. l  数据库邮件可执行文件 数据库邮件使用一个外部可执行文件来处理邮件,降低了对SQL Ser

Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据

原文:Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据 XQuery 是一个浏览/返回XML实例的标准语言. 它比老的只能简单处理节点的XPath表达式更丰富. 你可以同XPath一样使用.或是遍历所有节点,塑造XML实例的返回等. 作为一个查询语言, 你需要一个查询处理引擎. SQL Server 数据库通过XML数据类型方法的T-SQL 语句来处理XQuery. SQL Server 并不支持所有的X

第1周 SQL Server 如何执行一个查询。

大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要,因为接下来的培训中我们会以这些概念来加深我们对SQL Server的认识. 当我们执行一个查询时,在SQL Server中最重要的组件有哪些,下面这张图片可以给大家一个概观的认识. 可以看到,SQL Server内部分成了2个部分:关系引擎和存储引擎.在关系引擎中最大的一个组件是查询优化器.查询优化

在SQL Server 2016里使用查询存储进行性能调优

作为一个DBA,排除SQL Server问题是我们的职责之一,每个月都有很多人给我们带来各种不能解释却要解决的性能问题. 我就多次听到,以前的SQL Server的性能问题都还好且在正常范围内,但现在一切已经改变,SQL Server开始糟糕, 疯狂的事情不能解释.在这个情况下我介入,分析下整个SQL Server的安装,最后用一些神奇的调查方法找出性能问题的根源. 但很多时候问题的根源是一样的:所谓的计划回归(Plan Regression),即特定查询的执行计划已经改变.昨天SQL Serv

实战SQL Server 2005镜像配置全过程

SQL Server 2005镜像配置基本概念 我理解的SQL Server 2005镜像配置实际上就是由三个服务器(也可以是同一服务器的三个 SQL 实例)组成的一个保证数据的环境,分别是:主服务器.从服务器.见证服务器. 主服务器:数据存放的地方 从服务器:数据备份的地方(即:主服务器的镜像) 见证服务器:动态调配主/从服务器的第三方服务器 环境介绍 首先介绍一下配置的环境: 本次配置使用的是三个独立的服务器(A.B.C三台电脑). A:主服务器,IP:192.168.0.2 B:从服务器,