因为项目需要,需要对上传的文件内容进行查询。通过MSDN了解到Windows索引服务可以实现对文件的全文检索,并可以通过SQL Server进行查询。项目将这两者结合,实现对上传文件的全文检索的解决方案。 A
将索引服务和SQL数据库关联: T 8vFu,:e
在SQL 查询分析器(SQL Query Analyer)里执行下面的存储过程 6F" e4~;
EXEC sp_addlinkedserver Dcs, -- 连接服务器的名字,到后面查询的时候要用到 +aR# W~
'Index Server', Lt+d6MEy
'MSIDXS', xqIZ
'DCSII' -- 索引服务里新建的编录名字 /gYA~b7n
OIf0~CZF[
0/|\
索引服务的性能调整方法1 R{UkM#-I
.%hj[
(1) 右键选择索引服务 ()u?Zvau
(2) 选择 All Tasks-> Tune Perrformance #XJlxS
(3) 选择用户自定义 Zv7[;v/l~
(4) 点击Customize进入性能调整窗体 UHQyUwI
(5) 将Index和Querying的属性移动到最右边 [9>t6-K_o
(6) 点确定完成操作 Wj\b+-=g
IQcM!^PPC
性能调整方法2 [f_Oq{kd
如果服务器不需要对整个系统的文件进行索引,可以停止或者删除System编录。 CY lgY
U F'Dw~p
J{an'<0
MS SQL对索引服务器的调用 1 < q3Waa
1. 通过sql语句查询连接服务器的内容 a=D\LqqOd9
SELECT Q.* 9=X7sl~aQ
FROM OpenQuery(dcs, --连接服务器名字 #2$U")wG
'SELECT FileName, Size, DocAuthor, path --在连接服务器里的sql语句 QK3"m2_
FROM SCOPE() 6B&b0; `]
WHERE CONTAINS(''番号 and abc'') ' qd"GFl@:
) AS Q ak XHq`I
2. 因为SQL语句不支持动态输入的字符串,因此查询字符串只好在C#代码里进行拼接 9u` OAX
-i2k[da
7JEo7 'ZB
实不用将文件保存到数据库外面也能实现在数据库里实现全文搜索。具体方案是在SQL Server 2000里安全全文搜索功能,用image字段存储文件内容,并新增一个字段存放文件类型,然后在通过企业管理器新建全文索引项的时候将这两个字段匹配就可以。不过从数据库的/率以及今后数据库备份和恢复的效率上来看,将文件放在数据库的设计不是太好。