MSSQL全文检索
来源:互联网 发布:上海市电子学生证淘宝 编辑:程序博客网 时间:2024/05/17 02:06
大家可能都会用
select * from tb where field like '%关键字%'
但是一旦数据量大用户多,就会造成查询过慢,因此MS提供一种牺牲空间来换取时间的解决方案。
全文检索。原文请看
http://www.microsoft.com/china/msdn/archives/library/dnsql2k/html/sql_fulltextsearch.asp
我对自己的实现加了些注释:
use PopAsk
--使用这个库
exec sp_fulltext_database 'enable'
--使这个库允许全文检索
-----以下对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 Files/Microsoft SQL Server/MSSQL/FTDATA/SQLServer/Config/noise.chs
我参考别人的做法,只保留了一个?号。
还有数据库默认语言排序规则设置成Chinese_PRC_CI_AS
不要忘记建立一个作业,定时(一般可以每天)为全文检索添加记录。
exec sp_fulltext_table 'Answer_Total', 'start_full'
exec sp_fulltext_table 'Question_Total', 'start_full'
-- 填充全文检索记录。
select * from tb where field like '%关键字%'
但是一旦数据量大用户多,就会造成查询过慢,因此MS提供一种牺牲空间来换取时间的解决方案。
全文检索。原文请看
http://www.microsoft.com/china/msdn/archives/library/dnsql2k/html/sql_fulltextsearch.asp
我对自己的实现加了些注释:
use PopAsk
--使用这个库
exec sp_fulltext_database 'enable'
--使这个库允许全文检索
-----以下对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 Files/Microsoft SQL Server/MSSQL/FTDATA/SQLServer/Config/noise.chs
我参考别人的做法,只保留了一个?号。
还有数据库默认语言排序规则设置成Chinese_PRC_CI_AS
不要忘记建立一个作业,定时(一般可以每天)为全文检索添加记录。
exec sp_fulltext_table 'Answer_Total', 'start_full'
exec sp_fulltext_table 'Question_Total', 'start_full'
-- 填充全文检索记录。
- MSSQL创建“全文检索”
- MSSQL全文检索
- MSSQL全文检索
- MSSQL:全文检索-同时检索多行
- mssql全文检索CONTAINS的用发.
- mssql全文检索CONTAINS的用法.
- MSSQL的【全文检索】配置设置(DDL)
- 实例演示在MSSQL中启用全文检索
- 全文检索
- 全文检索
- 全文检索
- 全文检索
- 全文检索
- 全文检索
- 全文检索
- 全文检索
- 全文检索
- 全文检索
- 将遗留Web应用程序移植到NetBeans
- Asp.NET 2.0中无刷新页面的开发
- 学习boost之format
- 超越自我 从程序员到系统分析员
- 如何实现ASP.NET网站个性化
- MSSQL全文检索
- ASP.NET 2.0角色及成员管理
- CodeGear RoadMap fro C++Builder :"Barracuda"(Middle of 2008)
- csdn的ajax客户端(通俗)
- 从今天开始,这个blog就是我的笔记了,java学习笔记!wulllllllllllllllllllla!!!
- 简历---范例
- 现实生活中的Swing和NetBeans平台开发
- 教你几着购买基金省钱的招数
- GWT开发AJAX。。。。