SQL Server的全文搜索功能

目录
  • 一、使用SQL Server全文搜索配置
    • 1、开启全文搜索服务:
    • 2、开启数据库的全文索引功能:
    • 3、创建全文索引目录:
    • 4、创建唯一索引:
    • 5、创建全文索引:
  • 二、使用全文搜索
    • CONTAINS搜索方式
      • 1.简单词搜索
      • 2.前缀词搜索的方式
      • 3.加权词搜索的方式
      • 4.邻近词搜索的方式
    • FREETEXT搜索方式
    • CONTAINSTABLE搜索方式
      • 1、CONTAINSTABLE基本搜索:
      • 2、CONTAINSTABLE返回所需列:
      • 3、CONSTAINSTABLE按符合条件排序
      • 4、CONSTAINSTABLE按按权值排序
    • 使用FREETEXTTABLE搜索
    • 搜索image字段
  • 三、小结与评价

一、使用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    --全文索引表

到此这篇关于SQL Server全文搜索的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SqlServer 2005 简单的全文检索

    复制代码 代码如下: --查看当前数据库状态 1为已经启用了全文索引 SELECT DATABASEPROPERTY ('数据库名','IsFulltextEnabled') --打开FullText功能 execute sp_fulltext_databse 'enable' --关闭此功能 execute sp_fulltext_databse 'disable' --创建全文索引目录 --删除全文目录 DROP FULLTEXT 目录名 CREATE FULLTEXT CATALOG 目录

  • SQL_Server全文索引的使用实例演示

    本文示范完整的SQL SERVER数据库全文索引以pubs数据库为例首先,介绍利用系统存储过程创建全文索引的具体步骤:1) 启动数据库的全文处理功能           (sp_fulltext_database)2) 建立全文目录                       (sp_fulltext_catalog)3) 在全文目录中注册需要全文索引的表  (sp_fulltext_table)4) 指出表中需要全文索引的列名         (sp_fulltext_column)5) 为表

  • SQL Server 全文搜索功能介绍

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

  • SQLSERVER全文目录全文索引的使用方法和区别讲解

    先介绍一下SQLSERVER中的存储类对象,哈哈,先介绍一下概念嘛,让新手老手都有一个认知SQLSERVER Management Studio将[全文目录].[分区函数]以及[分区方案]节点纳入其[对象资源管理器]的[存储]节点之中,如下图所示: 全文目录 数据库[存储]|[全文目录]节点是用于保存和管理[全文索引]的节点.全文目录通常是由同一数据库中的零个或多个数据表的全文索引构成的.需要注意的是,只能为每个数据表创建一个全文索引.因此,一旦在某个数据表上创建了全文索引,那么该数据表将只能隶

  • SQL Server全文索引服务

    SQL 7的全文检索和Index Server的检索方式非常类似. Contains  AND, OR, NOT 可以在Contains中很方便使用逻辑表达式 Example: Select username from member where contains(userinfo,'"作家" AND "木匠"') Select username from member where contains(userinfo,'"作家" OR "

  • SQL_Server全文索引的用法解析

    复制代码 代码如下: --1.为数据库启用SQL Server全文索引EXEC sp_fulltext_database 'enable' --2.创建全文目录--(此处若出错"未安装全文搜索或无法加载某一全文组件",则可能是未启动或未安装此服务)EXEC sp_fulltext_catalog 'Ask91Fable', 'create', 'D:\Data2005\Ask_91_Index' --3.指定要进行全文搜索的表--(可能出错"...全文搜索键必须是唯一的.不可

  • SQLServer 全文检索(full-text)语法

    sql server 全文检索有两种搜索方式,一种是contains,另一种是freetext.前者是包含,类似于 like '%关键词%',后者则是将一段文字分词以后对每个词进行搜索. 具体语法: contains: SELECT 字段1,字段2 FROM 表名 WHERE contains(字段,'"词一" or "词二"') 根据查找结果的相似度排序 SELECT 字段1,字段2 FROM 表名 inner join containstable(表名, 字段,

  • 全文检索技术 sql server

    在未做全文检索以前,个人主页只能对Fs_Title(文章标题)字段进行模糊查询(like '%*%'),如果对内容进行模糊查询,速度极慢,有时还可能报错,今天终于有空了,把这个查询做好了,经过测 试,检索一万条纪录不到两秒时间.ENJOY~~ 复制代码 代码如下: use  LuanLuanDB exec sp_fulltext_database 'enable' exec sp_fulltext_catalog 'ArtileFullText', 'create', 'E:\SearchPag

  • SQL Server的全文搜索功能

    目录 一.使用SQL Server全文搜索配置 1.开启全文搜索服务: 2.开启数据库的全文索引功能: 3.创建全文索引目录: 4.创建唯一索引: 5.创建全文索引: 二.使用全文搜索 CONTAINS搜索方式 1.简单词搜索 2.前缀词搜索的方式 3.加权词搜索的方式 4.邻近词搜索的方式 FREETEXT搜索方式 CONTAINSTABLE搜索方式 1.CONTAINSTABLE基本搜索: 2.CONTAINSTABLE返回所需列: 3.CONSTAINSTABLE按符合条件排序 4.CON

  • SQL Server实现全文搜索查询详解

    目录 一.概述 二.全文搜索查询 三.将全文搜索查询与 LIKE 谓词进行比较 四.全文搜索体系结构 4.1.SQL Server 进程 4.2.过滤器守护程序主机进程 五.全文搜索处理 5.1.全文索引过程 5.2.全文查询流程 六.全文索引体系结构 6.1.全文索引结构 6.2.全文索引片段 6.3.全文索引和常规 SQL Server 索引之间的差异 总结 一.概述 全文索引在表中包括一个或多个基于字符的列.这些列可以具有以下任何数据类型:char.varchar.nchar.nvarch

  • PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】

    本文实例讲述了PHP在innodb引擎下快速代建全文搜索功能的方法.分享给大家供大家参考,具体如下: 需要准备的设备:Liunx(Centos)操作系统(只支持Linux),PHP环境. 这里介绍一个国人开发的搜索引擎开源项目-讯搜(xunsearch),它分为:索引服务器和搜索服务器. 在CentOS下面愉快的代建服务器 wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2 tar -xjf xunsearch

  • SQL Server 2016 Alwayson新增功能图文详解

    概述 SQLServer2016发布版本到现在已有一年多的时间了,目前最新的稳定版本是SP1版本.接下来就开看看2016在Alwyson上做了哪些改进,记得之前我在写2014Alwayson的时候提到过几个需要改进的问题在2016上已经做了改进. 一.自动故障转移副本数量 在2016之前的版本自动故障转移副本最多只能配置2个副本,在2016上变成了3个. 说明:自动故障转移增加到三个副本影响并不是很大不是非常的重要,多增加一个故障转移副本也意味着你的作业也需要多维护一个副本.重要程度(一般).

  • Sql Server数据库各版本功能对比

    背景 今天举办的 Data Amp 大会上,微软向开发者们强调了 数据如何影响他们的应用和服务 ,顺道还宣布了几个小新闻.这个免费的线上研讨会不仅展示了未来的机器学习远景,还发布了 SQL Server 2017.推出了 面部认知服务 API 和 Azure 分析服务.显然,SQL Server 2017 将成为开发者们押注机器学习功能的下一个关键.其包含了对 Python(Python/R)的支持,且有能力承担数据密集型计算.微软开始向机器学习发力了. 数据库排名 从DB-Engines 发布

  • php利用scws实现mysql全文搜索功能的方法

    本文实例讲述了php利用scws实现mysql全文搜索功能的方法.分享给大家供大家参考.具体方法如下: scws这样的中文分词插件比较不错,简单的学习了一下,它包涵一些专有名称.人名.地名.数字年代等规则集合,可以直接将语句按这些规则分开成一个一个关键词,准确率在90%-95%之间,按照安装说明把scws的扩展放入php的扩展目录里,下载规则文件和词典文件,并在php配置文件中引用它们,就可以用scws进行分词了. 1) 修改 php 扩展代码以兼容支持 php 5.4.x 2) 修正 php

  • SQL Server使用导出向导功能

    1.前言 有时候,我们需要把A库A1表某一部分或全部数据导出到B库B1表中,如果系统运维工程师没打通两个库链接,我们执行T-SQL是处理数据导入时会发生如下错误: 这时候SQL Server导出功能很好弥补这一点,而该章节重点介绍该功能. 2.操作 数据库版本:Microsoft SQL Server Management Studio 17:源头数据库:[172.168.16.xxx].[PartInChina_cn].[dbo].[PUB_Stock]目标数据库:[local].[dbo].

  • Mongodb实战之全文搜索功能

    前言 众所周知在传统的关系型数据库中,我们通常将数据结构化,通过一系列表关联.聚合来查询我们所需的结果.而在非结构化的数据中,缺少这种预定义的结构,因而如何快速查询定位到我们所需要的结果,不是一件容易的事. Mongodb作为一种NoSQL数据库,非常适合存储和管理非结构化数据,例如互联网上的各种文本数据.假如我们用Mongodb存储了很多博客文章,那么如何快速找到所有关于"nodejs"这个主题的文章呢?Mongodb内建的全文搜索可以帮助我们完成这个功能.下面话不多说了,来一起看看

  • win2008下安装SQL SERVER 2005出现IIS功能要求 警告解决方案

    您会收到 SQL Server 2005 安装程序正在运行 Windows Vista 的计算机上的系统配置检查页或 Windows Server 2008 的一个服务器核心安装上一条警告消息 症状: 请考虑以下情形.您安装 Microsoft SQL Server 2005 或 Microsoft SQL Server 2005 速成版通过高级服务正在运行下列操作系统之一的计算机上:•Windows Server 2008 操作系统 •Windows Vista 操作系统 在这种情况下您会收到

随机推荐