推广基本技术:在ASP中运用SQL全文检索实现大量数据模糊查询。

超级大笨狼 2004-11-30 01:07:11
大家可能都会用
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, '测试')
*/
...全文
1511 61 打赏 收藏 转发到动态 举报
写回复
用AI写文章
61 条回复
切换为时间正序
请发表友善的回复…
发表回复
是是非非 2004-12-10
  • 打赏
  • 举报
回复
mark
尚和空四 2004-12-10
  • 打赏
  • 举报
回复
到 google 有个分段的 优化的不错
comszsoft 2004-12-10
  • 打赏
  • 举报
回复
收藏
batistuta97 2004-12-10
  • 打赏
  • 举报
回复
谢谢!收藏
blues-star 2004-12-10
  • 打赏
  • 举报
回复
直接到SQL Server联机丛书里找相关内容就可以了,很全的。
blues-star 2004-12-10
  • 打赏
  • 举报
回复
凑个热闹,全文检索默认不安装,如果想更新组件,参考。




如何向 SQL Server 2000 实例中添加组件(安装程序)


说明 不能通过清除"选择组件"对话框中的复选框来删除组件。如果需要删除 SQL Server 实例中的组件,必须卸载该实例。


向 SQL Server 2000 实例(默认或命名)中添加组件

运行 SQL Server 安装程序,选择"SQL Server 2000 组件",然后单击 SQL Server 安装向导"欢迎"屏幕上的"下一步"按钮。


在"计算机名"对话框中,"本地计算机"是默认选项,本地计算机名显示在编辑框中。单击"下一步"按钮。


在"安装选项"对话框中,单击"升级、删除或将组件添加到 SQL Server 现有实例中"选项,然后单击"下一步"按钮。


如果已经安装了默认实例,则在"实例名称"对话框中,"默认"选项是被选定的。如果要向命名实例中添加组件,请从"实例名称"列表中选择该组件,然后单击"下一步"按钮。


在"现有安装"对话框中,单击"向现有安装中添加组件"选项,然后单击"下一步"按钮。


在"选择组件"对话框中,从"组件"列表中选择一个组件,然后从相关的"子组件"列表中选择各项。单击以选择要添加的项目,然后单击"下一步"按钮。
有关各个组件的信息,请选择该组件项,然后查看"描述"框。

在完成选项的指定后,请在"开始复制文件"对话框中单击"下一步"按钮,向所选 SQL Server 实例中添加组件。
QCB181 2004-12-09
  • 打赏
  • 举报
回复
学习
zzy0000 2004-12-09
  • 打赏
  • 举报
回复
mark
oklhj 2004-12-06
  • 打赏
  • 举报
回复
学习!
myboll 2004-12-06
  • 打赏
  • 举报
回复
全文检索确实发费很多时间,嘿嘿,正在考虑解决次问题
参考一下先
leopard_47 2004-12-06
  • 打赏
  • 举报
回复
学习,收藏,多谢:)
yqh1314 2004-12-03
  • 打赏
  • 举报
回复
看起来很复杂的!
huangchao 2004-12-03
  • 打赏
  • 举报
回复
up
calmer18 2004-12-03
  • 打赏
  • 举报
回复
学习
「已注销」 2004-12-03
  • 打赏
  • 举报
回复
好文章
dout 2004-12-03
  • 打赏
  • 举报
回复
收藏
davs 2004-12-03
  • 打赏
  • 举报
回复
支持一下
lijun355 2004-12-03
  • 打赏
  • 举报
回复
收藏了!
pressman 2004-12-03
  • 打赏
  • 举报
回复
cdsun 2004-12-03
  • 打赏
  • 举报
回复
好,谢谢。
加载更多回复(40)

28,392

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧