基于SPS平台信息系统文档属性存储及搜索方法

news/2024/7/4 13:26:01


对于基本于SPS平台的信息系统,需要处理大量的文档对象,文档也存在许多属性信息,这些属性信息将决定文档的搜索效率及文档的描述程度,如何有效地对文档的属性进行存储,将是处理好这个功能的基础。文档的属性可以存储在DB中也可以通过扩展存储在SharePoint Server中的文档属性来存储。

1. DB存储方式
对于大部分基于SPS平台的信息,要实现对文档操作的灵活性、可扩展性,我们都需要另外开发文档管理的功能,这就要求我们把文档的所有属性信息都必须保存在DB中。

2. 通过SharePoint Server扩展文档的属性
在基于SPS平台的信息系统,文档搜索是该平台上的主要功能之一,SPS文档搜索可以对文档内容、文档属性进行全文检索。要使搜索功能有强的灵活性,同样需要文档属性的支持,有了扩展的文档属性我们可以通过属性信息进行文档的属性过滤及搜索。

利用SPS平台的文档扩展属性来提高搜索灵活性,需要两方面的工作。
2.1 SPS中的配置
扩展属性的生成
• SPS中手工添加:打开SPS Portal的首页>>网站>>自定义列表>>栏>>添加新栏
• 通过代码实现(调用SPS的对象模型),参考案例如下:
 

None.gif // ----只针对WSS站点的shared document的属性--------------------------
None.gif
SPWeb web = new  SPSite(“localhost”).OpenWeb(”sites / temp”);
None.gifweb.AllowUnsafeUpdates 
=   true ;
None.giflists 
=  web.Lists;
None.gifmyDocLib
= (SPDocumentLibrary)web.Lists[ " 共享文档 " ];
None.gifmyDocLib.Fields.Add(
" DocNumber " ,SPFieldType.Text, false );
None.gifmyDocLib.Fields.Add(
" StatusCode " ,SPFieldType.Text, false );
None.gifmyDocLib.Fields.Add(
" Version " ,SPFieldType.Text, false );
None.gifmyDocLib.Fields.Add(
" Keyword " ,SPFieldType.Text, false );
None.gifmyDocLib.Fields.Add(
" Title " ,SPFieldType.Text, false );
None.gifmyDocLib.Fields.Add(
" KMID " ,SPFieldType.Text, false );
None.gifmyDocLib.Fields.Add(
" OldUrl " ,SPFieldType.Text, false );
None.gifURLmyDocLib.Fields.Add(
" KnowType " ,SPFieldType.Text, false );    
None.gif
// --------------------------------------------------------------
None.gif

 


扩展属性的搜索配置
SPS中手工配置:
打开SPS Portal的网站属性>>搜索设置和索引内容(从已爬网的文档管理属性)>>
urn:schemas-microsoft-com:office:office>>选择你自定义的属性名称(是“ows_“开头)>>搜索选项(选择[在“高级搜索”选项中包含该属性][在内容索引中包含该属性])
2.2 实现全文搜索功能
 通过代码实现(调用SPS的对象模型),参考案例如下:

 

None.gif PortalContext pcx = null ;
None.gif
string  sSearchAppName  =   "" ;
None.gifQueryProvider qp 
= null ;
None.gif
try
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif  pcx 
= PortalApplication.GetContext();
InBlock.gif  sSearchAppName 
= pcx.SearchApplicationName;
InBlock.gif  qp 
= new QueryProvider(sSearchAppName); 
InBlock.gif  qp.SetProperty(
"Maximum Rows""2000");
InBlock.gif  
string SQL =
InBlock.gif    
"select \"DAV:displayname\"," +
InBlock.gif
"\"urn:schemas-microsoft-com:office:office#ows_DocNumber\","+
InBlock.gif
"\"urn:schemas-microsoft-com:office:office#ows_Keyword\","+
InBlock.gif
"\"urn:schemas-microsoft-com:office:office#ows_KMID\","+
InBlock.gif
"\"urn:schemas-microsoft-com:office:office#ows_OldUrl\","+
InBlock.gif
"\"urn:schemas-microsoft-com:office:office#ows_StatusCode\","+
InBlock.gif
"\"urn:schemas-microsoft-com:office:office#ows_Title0\","+
InBlock.gif
"\"urn:schemas-microsoft-com:office:office#ows_Version0\","+
InBlock.gif
"\"urn:schemas-microsoft-com:office:office#ows_KnowType\","+
InBlock.gif
"\"DAV:href\"," +
InBlock.gif
"\"DAV:creationdate\","+
InBlock.gif                        
"\"DAV:getlastmodified\","+
InBlock.gif                        
"\"DAV:getcontentlength\""+
InBlock.gif                        
" from (TABLE Portal_Content..Scope() UNION ALL TABLE Non_Portal_Content..Scope())" + 
InBlock.gif                        
" where freetext(\""+strKey+"\")"+
InBlock.gif                        
" and (freetext(\"DAV:href\", '"+strSite1+"') or freetext(\"DAV:href\", '"+strSite2+"'))"+    " and not (\"urn:schemas-microsoft-com:office:office#ows_StatusCode\"= 'UnReview')"+    " Order by \"DAV:getlastmodified\" DESC";
ExpandedBlockEnd.gif                }

None.gif                qp.Execute(SQL);
None.gif            }
None.gif            
catch (Exception ex)
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                
this.errStr=ex.Message.ToString();
InBlock.gif                
return;
ExpandedBlockEnd.gif            }

None.gif            
finally
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                qp
=null;
InBlock.gif                pcx
=null;
InBlock.gif            
ExpandedBlockEnd.gif            }

转载于:https://www.cnblogs.com/AndyZheng/archive/2005/06/20/177699.html


http://www.niftyadmin.cn/n/4141110.html

相关文章

使用matplotlib的示例:调整字体-设置colormap和colorbar

使用matplotlib的示例:调整字体-设置colormap和colorbar # -*- coding: utf-8 -*- #********************************************************** import os import numpy as np import wlab #pip install wlab import matplotlib import matplotlib.cm as cm impo…

STM32建立基本项目

1、下载固件库解压 2、Keil建立项目,项目下建立三个文件夹3、各目录下从固件库中拷贝对应的目录 4、修改main.c文件 5、修改C 6、修改Include 7,编译。 转载于:https://www.cnblogs.com/zhaogaojian/p/8447977.html

关于windows窗体登录验证的思考

下午本来想适应一下登录验证的设计,结果错误接踵而来.纠正了大半天,还是没有搞定.本以为很快就可以搞定的...结果一直拖到晚上.先是在判断用户名或密码为空时进行了处理,原以为if (!textBox1.Text) 或者if (textBox1.Textnull) 就可以搞定.结果编译老是报错.......想了半天,于…

说说二维码

二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息。最近通过道哥的文章发现一个二维码制作的网站:http://goqr.me/ 特别是在信息发展这么迅速的地方,二维码能够越来越快速的呈现出…

Codeforces 939D - Love Rescue

传送门:http://codeforces.com/contest/939/problem/D 本题是一个数据结构问题——并查集(Disjoint Set)。 给出两个长度相同,且仅由小写字母组成的字符串Ss[1..n]、Tt[1..n]。已知一个无序对(u,v)可以完成任意次的以下转换操作&a…

今天聊发兴致,写了一个 COM STEP BY STEP,结果。。。

太久没写C程序了,都忘记class声明后面的;号了,唉。。。。转载于:https://www.cnblogs.com/xiaotaoliang/archive/2005/07/20/196230.html

统计子目录大小情况并排序显示

http://blog.chinaunix.net/u/6542/showart.php?id394070使用 du -sh * 可以显示指定目录下各文件/目录的大小情况,但是输出结果不够人性化(human-readable),以 /usr/share/目录为例du -sh /usr/share/* 会输出如下信息654K /usr/share/a…

鼠标相关API应用

我们在编制应用软件的过程中,常常需要对光标和鼠标操作,本人在文中介绍了Windows系统中有关实现对鼠标和光标进行操作的API函数,并给出了在Visual C6.0中利用所介绍的API函数实现对鼠标和光标的操作的代码。一、隐藏和显示光标函数&#xff1…