全文本检索的应用

基本知识

1. SQL Server7 的 DeskTop 版中没有全文本检索。

2. 一个表只能有一个全文本检索。

3. 被检索的表必须有单列的唯一索引。

4. 全文本的索引存储在文件系统中,而非数据库中。

5. 更新全文本索引的过程比常规索引要耗时,而且也不象常规索引那样可以由数据库系统立即更新。

6. 全文本索引包含在全文本目录( Full-Text Catalog )中,每个数据库可以包含一个或多个目录,但一个目录不能属于

多个数据库。

7. 全文本检索只能在真正的表上创建,不能是视图,系统表,临时表。

8. 全文本检索会忽略某些噪音字( noise words),比如英文的 a,the,and,中文的‘和‘,‘是‘等等。

9. 如果在查询中包含 noise words ,就会引发错误,在应用程序中应去除这些 noise words。

启动全文本检索服务。

方法A:在企业管理器中打开 Support Services 文件夹,在 Full-Text Search 的右键菜单中选择 Start。

方法B:在 SQL Server Service Manager 的 Services 下拉列表中选择 Microsoft Search,并单击 Start/Continue 按

钮。

方法C:使用 net start mssearch 的命令行方式。

使用全文本检索向导( Full-Text Indexing Wizard )。

step1. 选择被检索的数据库,在 Tools 的菜单中,选择 Full-text Indexing,进入欢迎( Welcome )的屏幕,单击

next。

step2. 选择被检索的表,单击 next。

step3. 选择唯一索引,单击 next。

step4. 选择被索引的列,单击 Add,该列显示在右栏中。单击 next。

step5. 选择目录(选择已存在的目录,或创建新的目录),单击 next。

step6. 选择或创建 population schedule(可选项),单击 next。

step7. 单击 finish。

使用 SQL-DMO (以 VB 为例)

step1. 在工程的引用中选择 Microsoft SQLDMO Object Library。

step2. 创建 SQLServer 对象。

Dim objSQL As New SQLDMO.SQLServer

objSQL.Connect "localhost", "sa", ""

step3. 创建新的目录,并加入到被索引的数据库目录中。

Dim objCatalog As New SQLDMO.FullTextCatalog

‘使 pubs 为全文本检索的数据库

objSQL.Databases("pubs").EnableFullTextCatalogs

‘创建新的目录

objCatalog.Name = "ftcPubsTest"

‘将新目录加入到目录集合中

objSQL.Databases("pubs").FullTextCatalogs.Add objCatalog

step4. 在表上创建全文本索引。

Dim objTable As New SQLDMO.Table

‘指定被索引的表

Set objTable = objSQL.Databases("pubs").Tables("authors")

‘指定目录名和唯一索引名

objTable.FullTextCatalogName = "ftcPubsTest"

objTable.UniqueIndexForFullText = "UPKCL_auidind"

objTable.FullTextIndex = True

‘指定被索引的列

objTable.Columns("au_lname").FullTextIndex = True

objTable.Columns("au_fname").FullTextIndex = True

‘激活该表上的全文本索引

objTable.FullTextIndexActive = True

step5. 启动全文本目录

objCatalog.Start SQLDMOFullText_Full

使用存储过程

step1. 使 pubs 为全文本检索的数据库

USE Pubs

go

sp_fulltext_database ‘enable‘

step2. 创建新的目录

sp_fulltext_catalog ‘ftcPubsTest‘,‘create‘

step3. 指定被索引的表

sp_fulltext_table ‘authors‘,‘create‘,‘ftcPubsTest‘,‘UPKCL_auidind‘

step4. 指定被索引的列

sp_fulltext_column ‘authors‘,‘au_lname‘,‘add‘

sp_fulltext_column ‘authors‘,‘au_fname‘,‘add‘

step5. 激活该表上的全文本索引

sp_fulltext_table ‘authors‘,‘activate‘

step6. 启动全文本目录

sp_fulltext_catalog ‘ftcPubsTest‘,‘start_full‘

CONTAINS 语法

我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS

(fullText_column,‘search contents‘)。

我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列。

1. 查询住址在北京的学生

SELECT student_id,student_name

FROM students

WHERE CONTAINS( address, ‘beijing‘ )

remark: beijing是一个单词,要用单引号括起来。

2. 查询住址在河北省的学生

SELECT student_id,student_name

FROM students

WHERE CONTAINS( address, ‘"HEIBEI province"‘ )

remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。

3. 查询住址在河北省或北京的学生

SELECT student_id,student_name

FROM students

WHERE CONTAINS( address, ‘"HEIBEI province" OR beijing‘ )

remark: 可以指定逻辑操作符

全文本检索的应用,布布扣,bubuko.com

时间: 2024-10-13 12:32:44

全文本检索的应用的相关文章

Mysql 全文本检索

mysql 全文索引 注意 并非所有的引擎都支持 全文检索 mysql最常用的引擎 INnodb 和 myisam 后者支持全文检索 前者不支持 创建表的时候指定要检索列 CREATE TABLE TEST_FULLTEXT(note_id int not null auto_increment,note_text text null, primaty key(note_id),FULLTEXT(note_text) )engine=myisam; fulltext 索引某个列 fulltext

Things App Engine Doesn't Do...Yet

当人们第一次使用App Engine的时候,他们会问一些App Engine不会做的事情.其中的一些事情Google在不久的将来会实现的,还有一些违背了App Engine设计的本质,将不可能增加(到App Engine中).在一本书中列出这些特性是困难的,因为随着时间推移,你读到的可能已经被Google实现了.(确实,这个列表从本书一版之后已经变得相当短了.<1.Indeed,this list has gotten substantially shorter since the first

sql全文检索例子

sql 中contains的使用例子,参数详解 全文索引——CONTAINS 语法 我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents'). 我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列. 1. 查询住址在北京的学生 SELECT student_id,student_name FROM stu

lucene+盘古分词

一般的网站都会有都会有搜索的功能,一般实现搜索主要有三种方案 第一种是最差的,也是最不推荐的,使用数据库的模糊查询例如select * form table where 字段 like XXX,这种查询的缺点很明显: (1)       无法查找几个关键词不连在一起的情况 (2)       全表扫描 效率低下 第二种:使用SqlServer的全文本检索功能 举例:select * form table where msg = ‘江苏南京’ 这是就可以写成select * form table

ElasticSearch(7)-排序

引用自ElaticSearch权威指南 一.排序 相关性排序 默认情况下,结果集会按照相关性进行排序 -- 相关性越高,排名越靠前. 这一章我们会讲述相关性是什么以及它是如何计算的. 在此之前,我们先看一下sort参数的使用方法. 排序方式 为了使结果可以按照相关性进行排序,我们需要一个相关性的值.在ElasticSearch的查询结果中, 相关性分值会用_score字段来给出一个浮点型的数值,所以默认情况下,结果集以_score进行倒序排列. 有时,即便如此,你还是没有一个有意义的相关性分值.

几种搜索引擎算法研究

http://www.cnblogs.com/zxjyuan/archive/2010/01/06/1640136.html 1.引言 万维网WWW(World Wide Web)是一个巨大的,分布全球的信息服务中心,正在以飞快的速度扩展.1998年WWW上拥有约3.5亿个文档[14],每天增加约1百万的文档[6],不到9个月的时间文档总数就会翻一番[14].WEB上的文档和传统的文档比较,有很多新的特点,它们是分布的,异构的,无结构或者半结构的,这就对传统信息检索技术提出了新的挑战. 传统的W

全文索引CONTAINS语法

Like直接在数据据中查找可以查到所有所需记录但是会扫描整个表会影响性能CONTAINS是基于全文索引进行查询,查询结果受系统全文索引分词的方法影响查询结果会不全.Select * FROM A Where CONTAINS(B,'"IT"Or"理论"')5257条记录Select * FROM A Where B Like'%IT%' or B LIKE '%理论%' 5468条记录结论:需要精确查询用Like如产品搜索,内容搜索可以用CONTAINS提高效率.

mongodb Index(3)

全文索引 MongoDB有一个特殊的索引用在文档中搜索文本,之前的博客都是用精确匹配来查询字符串,这些技术有一定的限制.在搜索大块文本的速度非常慢,而且无法处理自然语言礼节的问题.全文本索引使用的是"倒排索引"的思想来做的,和当前非常开源的lucene(全文检索)项目是一样的思想来实现的.使用全文本索引可以非常快的进行文本搜索,MongoDB支持多种语言,可惜在免费版中,并不支持汉语.查MongoDB的官网可以看到,在企业版中安装第三方插件可以支持中文的全文索引. 使用全文本检索需要专

ElasticSearch-排序

阅读目录 一.排序 二.字符串排序 三. 相关性 四.数据字段 引用自ElaticSearch权威指南 回到顶部 一.排序 相关性排序 默认情况下,结果集会按照相关性进行排序 -- 相关性越高,排名越靠前. 这一章我们会讲述相关性是什么以及它是如何计算的. 在此之前,我们先看一下sort参数的使用方法. 排序方式 为了使结果可以按照相关性进行排序,我们需要一个相关性的值.在ElasticSearch的查询结果中, 相关性分值会用_score字段来给出一个浮点型的数值,所以默认情况下,结果集以_s