对于基本于SPS平台的信息系统,需要处理大量的文档对象,文档也存在许多属性信息,这些属性信息将决定文档的搜索效率及文档的描述程度,如何有效地对文档的属性进行存储,将是处理好这个功能的基础。文档的属性可以存储在DB中也可以通过扩展存储在SharePoint Server中的文档属性来存储。
1. DB存储方式
对于大部分基于SPS平台的信息,要实现对文档操作的灵活性、可扩展性,我们都需要另外开发文档管理的功能,这就要求我们把文档的所有属性信息都必须保存在DB中。
2. 通过SharePoint Server扩展文档的属性
在基于SPS平台的信息系统,文档搜索是该平台上的主要功能之一,SPS文档搜索可以对文档内容、文档属性进行全文检索。要使搜索功能有强的灵活性,同样需要文档属性的支持,有了扩展的文档属性我们可以通过属性信息进行文档的属性过滤及搜索。
利用SPS平台的文档扩展属性来提高搜索灵活性,需要两方面的工作。
2.1 SPS中的配置
扩展属性的生成
• SPS中手工添加:打开SPS Portal的首页>>网站>>自定义列表>>栏>>添加新栏
• 通过代码实现(调用SPS的对象模型),参考案例如下:
//
----只针对WSS站点的shared document的属性--------------------------
SPWeb web
=
new
SPSite(“localhost”).OpenWeb(”sites
/
temp”);
web.AllowUnsafeUpdates
=
true
;
lists
=
web.Lists;
myDocLib
=
(SPDocumentLibrary)web.Lists[
"
共享文档
"
];
myDocLib.Fields.Add(
"
DocNumber
"
,SPFieldType.Text,
false
);
myDocLib.Fields.Add(
"
StatusCode
"
,SPFieldType.Text,
false
);
myDocLib.Fields.Add(
"
Version
"
,SPFieldType.Text,
false
);
myDocLib.Fields.Add(
"
Keyword
"
,SPFieldType.Text,
false
);
myDocLib.Fields.Add(
"
Title
"
,SPFieldType.Text,
false
);
myDocLib.Fields.Add(
"
KMID
"
,SPFieldType.Text,
false
);
myDocLib.Fields.Add(
"
OldUrl
"
,SPFieldType.Text,
false
);
URLmyDocLib.Fields.Add(
"
KnowType
"
,SPFieldType.Text,
false
);
//
--------------------------------------------------------------
扩展属性的搜索配置
SPS中手工配置:
打开SPS Portal的网站属性>>搜索设置和索引内容(从已爬网的文档管理属性)>>
urn:schemas-microsoft-com:office:office>>选择你自定义的属性名称(是“ows_“开头)>>搜索选项(选择[在“高级搜索”选项中包含该属性][在内容索引中包含该属性])
2.2 实现全文搜索功能
通过代码实现(调用SPS的对象模型),参考案例如下:
PortalContext pcx
=
null
;
string
sSearchAppName
=
""
;
QueryProvider qp
=
null
;
try

{
pcx = PortalApplication.GetContext();
sSearchAppName = pcx.SearchApplicationName;
qp = new QueryProvider(sSearchAppName);
qp.SetProperty("Maximum Rows", "2000");
string SQL =
"select \"DAV:displayname\"," +
"\"urn:schemas-microsoft-com:office:office#ows_DocNumber\","+
"\"urn:schemas-microsoft-com:office:office#ows_Keyword\","+
"\"urn:schemas-microsoft-com:office:office#ows_KMID\","+
"\"urn:schemas-microsoft-com:office:office#ows_OldUrl\","+
"\"urn:schemas-microsoft-com:office:office#ows_StatusCode\","+
"\"urn:schemas-microsoft-com:office:office#ows_Title0\","+
"\"urn:schemas-microsoft-com:office:office#ows_Version0\","+
"\"urn:schemas-microsoft-com:office:office#ows_KnowType\","+
"\"DAV:href\"," +
"\"DAV:creationdate\","+
"\"DAV:getlastmodified\","+
"\"DAV:getcontentlength\""+
" from (TABLE Portal_Content..Scope() UNION ALL TABLE Non_Portal_Content..Scope())" +
" where freetext(\""+strKey+"\")"+
" 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";
}
qp.Execute(SQL);
}
catch
(Exception ex)

{
this.errStr=ex.Message.ToString();
return;
}
finally

{
qp=null;
pcx=null;
}