本文是參考MSDN文檔做的示例,SharePoint 2013搜索二進制對象(BLOB),通過外部內容類型的方式將外部數據與SharePoint相關聯,修改BCD模型,使SharePoint能夠爬網外部數據中的文件流。
步驟,首先就是使用SPD創建外部內容類型,並為外部內容類型添加各種操作;然后,將BCD模型導出,添加方法后重新導入;最后,配置爬網,對外部內容類型進行爬網。
1、首先,用Designer 2013打開站點,點擊左上角按鈕,創建外部內容類型;
2、輸入外部內容類型的名稱,點擊“單擊此處發現外部數據並定義操作”;
3、在外部內容類型的操作設計器中,點擊添加連接;
4、而后的外部數據源類型選擇SQL Server;
5、再然后填寫SQL Server連接的相關屬性,如下圖添加,即可:
6、如下圖,添加連接以后,會顯示數據庫相關表和視圖,下面,我們創建所有操作;
7、如下圖,可以看到創建、讀取項、更新、刪除、讀取列表等操作,當然,某些情況,我們也會一一創建,這里為了省事兒,我一起創建;
8、可以看到我們數據源的元素,我們全部顯示出來,並且ID是主鍵,點擊下一步;
9、進入篩選器參數配置,如下圖,我們點擊添加篩選器參數,參見步驟10:
10、如下圖,添加篩選器后,選中,點擊右側的“單擊以添加”,彈出“篩選器配置”對話框,選中限制,點擊確定,而后在右側默認值選中1000;
特:要說明的是,這個限制是防止返回大量數據的,如果限制了1000,數據量超過1000后會報錯,需要修改這個設置;
11、創建完畢后,點擊完成,查看下圖:可以看到外部內容類型的操作和字段;
12、創建完畢后,選中導出BCD模型,如下圖,點擊確定,選中路徑,保存即可;
13、使用VS打開導出的BCD模型,方便編輯;
特別:如果你對於BCD模型不是很熟悉,建議先看看文章后面附的MSDN鏈接,多理解下每個節點,大致有什么意思。哪里是屬性,哪里是變量聲明,哪里是方法,這樣對於配置起來,會事半功倍的。
14、修改導出的BCD模型,添加新的方法,用來爬網BLOB;
15、修改完成后,進入管理中心,刪除現有的BCD模型,導入我們修改以后的,如下圖:
16、進入搜索應用程序,添加內容源,並對內容源進行完全爬網;
17、查看爬網日志;
詳細日志
18、測試搜索程序;
總 結
如博客介紹,SharePoint 2013搜索BLOB,如果可以行程解決方案,對搜索SharePoint系統外數據庫中的文件,會有很大的幫助,本文參考MSDN文檔,如有任何問題,可以參照附錄的文檔查看。
好了,就這樣吧,好歹搞一搞,就又該睡覺了,還好今天還算有收獲,大家晚安~~
附 一 修改BCD模型添加的方法的Xml
<Method Name="GetData"> <Properties> <Property Name="RdbCommandText" Type="System.String">SELECT FileDate FROM T_BlobDate where ID=@ID</Property> <Property Name="RdbCommandType" Type="System.Data.CommandType, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">Text</Property> </Properties> <Parameters> <Parameter Direction="In" Name="@ID"> <TypeDescriptor TypeName="System.Int32" IdentifierName="ID" Name="ID" /> </Parameter> <Parameter Name="StreamData" Direction="Return"> <TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="StreamData"> <TypeDescriptors> <TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="StreamData Element"> <TypeDescriptors> <TypeDescriptor TypeName="System.Byte[]" Name="FileDate" /> </TypeDescriptors> </TypeDescriptor> </TypeDescriptors> </TypeDescriptor> </Parameter> </Parameters> <MethodInstances> <MethodInstance Name="FileDate" ReturnParameterName="StreamData" Type="StreamAccessor" ReturnTypeDescriptorPath="StreamData[0].FileDate" Default="true"> <Properties> <Property Name="MimeTypeField" Type="System.String">ContentType</Property> <Property Name="FileNameField" Type="System.String">DisplayName</Property> </Properties> </MethodInstance> </MethodInstances> </Method>
附 二 外部內容類型的數據庫庫結構
附 三 參考鏈接
如何:基於 SQL Server 表創建外部內容類型
http://msdn.microsoft.com/zh-cn/library/office/ee557243.aspx
如何:在 SharePoint 中創建外部列表
http://msdn.microsoft.com/zh-cn/library/office/ee558778.aspx
如何:在 SharePoint 2013 中對二進制大型對象 (BLOB) 進行爬網
http://msdn.microsoft.com/zh-cn/library/office/gg294168.aspx
XML Snippet: Modeling a StreamAccessor Method
http://msdn.microsoft.com/en-us/library/ff464410.aspx




















