SQL全文检索例讲

2016-02-19 13:52 1 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐SQL全文检索例讲,赶紧看过来吧!

【 tulaoshi.com - 编程语言 】

大家可能都会用
select * from tb where field like '%关键字%'
但是一旦数据量大用户多,就会造成查询过慢,因此MS提供一种牺牲空间来换取时间的解决方案。
全文检索。原文请看
http://www.microsoft.com/china/msdn/archives/library/dnsql2k/html/sql_fulltextsearch.asp
我对自己的实现加了些注释:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

use  PopAsk
--使用这个库

exec sp_fulltext_database 'enable'
--使这个库允许全文检索

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

-----以下对Question_Total表操作------
/*
首先:要为全文检索目录起个名字,比如Q_ID_Desc
然后:要确保你这个表必须有个唯一主键,比如我这个Question_Total表,主键名是:PK_Question_Total
剩下就把要检索的列加进去就可以了。
*/
exec sp_fulltext_catalog 'Q_ID_Desc', 'create'
--创建名为Q_ID_Desc的全文检索目录,默认位置。

exec sp_fulltext_table 'Question_Total', 'create', 'Q_ID_Desc',  'PK_Question_Total'
-- 把Question_Total这个表,创建到全文检索目录中,指定主键。

exec sp_fulltext_column 'Question_Total', 'Title', 'add'
-- 把Question_Total这个表,要检索的Title列,添加到全文检索中。

exec sp_fulltext_column 'Question_Total', 'Content', 'add'
-- 把Question_Total这个表,要检索的Content列,添加到全文检索中。

exec sp_fulltext_table 'Question_Total', 'start_full'
-- 填充全文检索记录。

select FULLTEXTCATALOGPROPERTY('Q_ID_Desc', 'Populatestatus')
-- 这句可以不用,是检测是否添完状态的,1代表正在进行,0代表完成。

-----以下对另外一个表Answer_Total操作------
exec sp_fulltext_catalog 'A_ID_Desc', 'create'
--创建名为A_ID_Desc的全文检索目录,默认位置。

exec sp_fulltext_table 'Answer_Total', 'create', 'A_ID_Desc',  'PK_Answer_Total'
-- 把Question_Total这个表,创建到全文检索目录中,指定主键。

exec sp_fulltext_column 'Answer_Total', 'Answer_Content', 'add'
-- 把Answer_Total这个表,要检索的Answer_Content列,添加到全文检索中。

exec sp_fulltext_table 'Answer_Total', 'start_full'
-- 填充全文检索记录。

select FULLTEXTCATALOGPROPERTY('A_ID_Desc', 'Populatestatus')
-- 这句可以不用,是检测是否添完状态的,1代表正在进行,0代表完成。

/*
执行下列语句用于检索。
SELECT *
FROM FREETEXTTABLE(Question_Total, title, '测试')

SELECT *
FROM FREETEXTTABLE(Answer_Total, Answer_Content, '测试')
*/

躁声字文件

C:Program FilesMicrosoft SQL ServerMSSQLFTDATASQLServerConfigoise.chs

我参考别人的做法,只保留了一个?号。

还有数据库默认语言排序规则设置成Chinese_PRC_CI_AS

不要忘记建立一个作业,定时(一般可以每天)为全文检索添加记录。
exec sp_fulltext_table 'Answer_Total', 'start_full'
 
exec sp_fulltext_table 'Question_Total', 'start_full'
-- 填充全文检索记录。

来源:http://www.tulaoshi.com/n/20160219/1605480.html

延伸阅读
标签: SQLServer
  CONTAINSTABLE 语法 我们通常在 FROM 子句中使用 CONTAINSTABLE ,就象这样:SELECT * FROM table_name,CONTAINTABLE(fulltext_table,fullText_column,'search condition') WHERE ......。 CONTAINSTABLE 在查询方式上与 CONTAINS 几乎一样,所以就不用赘述了。CONTAINSTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作...
全文信息检索介绍及算法分析 作者:杨老师 一、摘要 本文主要介绍了全文信息检索的概念、应用领域、算法分类、技术难点和算法比较。及一款实现全文检索的数据结构和算法。 二 、什么是全文数据库和全文信息检索 保存在数据库中的记录数据,从类型上可以分为两种。其一是结构化数...
标签: SQLServer
  基本知识 1. SQL Server7 的 DeskTop 版中没有全文本检索。 2. 一个表只能有一个全文本检索。 3. 被检索的表必须有单列的唯一索引。 4. 全文本的索引存储在文件系统中,而非数据库中。 5. 更新全文本索引的过程比常规索引要耗时,而且也不象常规索引那样可以由数据库系统立即更新。 6. 全文本索引包含在全文本目录( Full-Text Catalog )...
标签: SQLServer
  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, 'bei...
如何在SQL中启用全文检索功能?本文将通过实例向你剖折这个问题。这是一个全文索引的一个例子,首先在查询分析器中使用: use pubs go --打开数据库全文索引的支持 execute sp_fulltext_database ''enable'' go --建立全文目录ft_titles execute sp_fulltext_catalog ''ft_titl...

经验教程

681

收藏

31
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部