原文: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个字节的长度,这个限制了它基本上不会被考虑了,因为连一篇文章都索引不了,只能用于一些非常小的字符串。

 
 

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

  1. SQL Server全文搜索

    SQL Server全文搜索 看这篇文章之前请先看一下下面我摘抄的全文搜索的MSDN资料,基本上MSDN上关于全文搜索的资料的我都copy下来了 并且非常认真地阅读和试验了一次,并且补充了一些SQL语 ...

  2. SQL Server全文搜索(转载)

    看这篇文章之前请先看一下下面我摘抄的全文搜索的MSDN资料,基本上MSDN上关于全文搜索的资料的我都copy下来了并且非常认真地阅读和试验了一次,并且补充了一些SQL语句,这篇文章本人抽取了一些本人自 ...

  3. SQL Server 全文搜索

    SQL Server 的全文搜索(Full-Text Search)是基于分词的文本检索功能,依赖于全文索引.全文索引不同于传统的平衡树(B-Tree)索引和列存储索引,它是由数据表构成的,称作倒转索 ...

  4. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  5. 第1/24周 SQL Server 如何执行一个查询

    大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要, ...

  6. Sql Server来龙去脉系列之三 查询过程跟踪

    我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...

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

    原文:第1周 SQL Server 如何执行一个查询 大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Se ...

  8. 在SQL Server中用好模糊查询指令LIKE

    简介:like在sql中的使用 在SQL Server中用好模糊查询指令LIKE 查询是SQL Server中重要的功能,而在查询中将Like用上,可以搜索到一些意想不到的结果和效果,like的神奇之 ...

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

    Centos 7.3下 Linux For SQL Server安装及配置介绍 高文龙关注13人评论2828人阅读2017-03-05 21:46:21 Centos 7.3下Linux For SQ ...

随机推荐

  1. ThinkPHP 中M方法和D方法的具体区别(转)

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  2. android 27 ListView

    效果: 上图中ArrarAdapter是数组的适配器,CursorAdapter是游标适配器,用于操作数据库的数据. ListView是垂直列表,数据源是集合或者数组,这些View都是安卓里的Adap ...

  3. Qt 学习之路 :使用 QJson 处理 JSON

    XML 曾经是各种应用的配置和传输的首选方式.但是现在 XML 遇到了一个强劲的对手:JSON.我们可以在 这里 看到有关 JSON 的语法.总体来说,JSON 的数据比 XML 更紧凑,在传输效率上 ...

  4. Customizing the Test Runner

    There are several situations where you want to customize Robolectric's test runner to perform some o ...

  5. 10.26 noip模拟试题

    enc[问题背景]zhx 和他的妹子聊天.[问题描述]考虑一种简单的加密算法.假定所有句子都由小写英文字母构成,对于每一个字母,我们将它唯一地映射到另一个字母.例如考虑映射规则:a->b, b- ...

  6. 2016年11月2日——jQuery源码学习笔记

    1.jQuery()函数,即$().有四种不同的调用方式. (1)传递CSS选择器(字符串)给$()方法,返回当前文档中匹配该选择器的元素集.可选第二个参数,一个元素或jQuery对象,定义元素查询的 ...

  7. SQL Server 的远程连接(转载)

    SQL Server默认是不允许远程连接的,如果想要在本地用SSMS连接远程服务器上的SQLServer2012数据库,需要确认以下环节: 1)如果是工作组环境,则需要使用SQL Server身份验证 ...

  8. 不能错过的XCode插件

    以便自己记忆网上找的! 以下是搜集的一些有力的XCode插件. 全能搜索家CodePilot 2.0 你要找的是文件?是文件夹?是代码?Never Mind,CMD+SHIFT+X调出CodePilo ...

  9. HTML页面中启用360浏览器极速模式

    今天做页面突然遇到浏览器一直在兼容模式下运行,体验不好,通过查询文档,在<head>中加入<meta name="renderer" content=" ...

  10. 主成份分析PCA

    Data Mining 主成分分析PCA 降维的必要性 1.多重共线性--预测变量之间相互关联.多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯. 2.高维空间本身具有稀疏性.一维正态分布有6 ...