NOTES-客製化Sharepoint查詢研究筆記
0 |
最近工作上遇到需要客製Sharepoint查詢的需求,這篇主要是研究過程的隨手筆記,避免明天一覺醒來忘到一乾二淨。由於內容較雜亂無章,請讀者自行斟酌是否要直接略過。
- 文件: MOSS 2007 Custom Search
- 先考慮用現成Search,可以節省大把時間。SPS2007已經比SPS2003先進方便很多--Business Data Content(BDC)。
- 真需客製時可用Microsoft.Office.Server.Search.Query建立WebPart
- 跨系統搜索(例如: SPS, CMS)的做法
1) 建立BDC Application Definition, 匯入SSP(Shared Services Provider)。其中要實作ProductIDEnumerator method,用來傳回Primary Key,讓Sharepoint可以用它讀資料回來做Index。
2) 匯入時會建立BDC Entities的網頁,可用來檢視資料是否正確匯入。
3) 在SSP中加入DBC Source,開始Crawl
4) 建立自訂屬性對應到爬回來的屬性,加入一些進偕搜尋可以用來篩選的條件(Mapping時可設定順位,若沒A,用B)
5) 重新再爬一次,這次會對應回Managed Properties。
6) 自訂搜尋吧! 有三種方法:
* Keyword Query syntax (直接送給Enterprise Search service)
* SQL syntax (加料式SQL語法)
* URL syntax (直接串連搜尋介面網頁) - SQL法範例:
SELECT Title, Path, Description, HitHighlightedSummary, Rank, ProductMembershipRank, DomesticRegion, ProductCategory
FROM SCOPE()
WHERE FREETEXT(Description,'Fun') AND ProductCategory = 'Accommodation'
AND DomesticRegion = 'Australia''s South West'
ORDER BY MembershipRank DESC, RANK DESC - SQL法的傳回結果:
FullTextSqlQuery ftsq = new FullTextSqlQuery(ServerContext.Current); ftsq.ResultTypes = ResultType.RelevantResults;
ftsq.QueryText = <YOURQUERY>;
//Return the search results to a ResultTableCollection,可視為DataSet用
ResultTableCollection results = ftsq.Execute() - ResultTableCollection,可視為DataSet用,同時有ElapsedTime, HitHighlightedSummary等好用屬性。
- 官方文件: Enterprise Search Architecture
- 組成元件: Index Engine, Query Engine, Protocol Handlers(將不同管道取得的原始資料中的文件取出來), IFilters(取出文件中的文字內容與屬性), Content Index, Property Store, Search Configuration Data, Wordbreakers
- Content Crawling: Filter Daemon使用Protocol Handler把資料取回來,用IFilter去取出其中的文字與Metadata,做全文檢索Index時會用到Workbreaker,Property與Index是分開存放的。Property存放處還一併記錄了文件層級的安控資訊。
- Search Query Engine: 搜尋關鍵字會先經Wordbreaker處理。有加Property條件時,會先用Index查,再依查到結果去取回屬性資料做第二層篩選,沒權限的查詢結果項目也會被刪除。
- 支援的資料來源: Sharepoint Content, Web Content, File Share, Exchange Folder Content, Business Data Content
- Shared Scopes: 用一些條件把內容項目定義成一個特定範圍,可用的Rule包含: Address, Property Query, Content Source
- Document Property Mappings: 有兩種Property-Crawled Prop.及Managed Prop.,二者間可以設定Mapping。
- Server Mapping: 可以設定查到的結果怎麼Mapping成特定的URL,例如: File Share -> Web Link
- Revevance Inclusions: 計算Ranking,改變結果項目顯示順序,可能的參數包含: Click distance, Hyperlink anchor text, URL surf depth, URL text matching, Automated metadata extraction, Automatic language detection, File type relevancy biasing, Enhanced text analysis
- File Type Inclusions: 決定Crawler哪些檔案類別要擷取哪些不要
- Logging: Query Log, Crawl Log
- Site Level的搜尋管理: Scope, Keyword and best bet
- 官方文件: Building Enterprise Search Queries
- Keywords
- 關鍵字: Keyword1 +Keyword2 -Keyword3
- 屬性:
<property name>:<value>
<scope name>:<value>
<collapsed results type>:<value> - 屬性範例: site:http://blog.darkthread.net, author:"Jeffrey Lee", scope:"ScopeName", duplicate:http://<displayUrl>(這個看不懂)
- 查詢時,不會檢查URL, SiteName, File Ext,就是查不到東西
- Enterprise Search SQL Language
- 以ANSI-SQL為基礎
- 不一定要精確,例如: program <-> programming
- rank欄位會傳回吻合度,0-1000
- 有些(謎之聲: 這叫很多吧?)SQL語法不可用: CONVERT(但CAST可以)、CREATE VIEW、DATASOURCE、AVG(), COUNT(), MAX(), MIN(), SUM(), GRANT, INSERT, CONTAINS, LIKE, MATCHES, 關聯欄位相比較(不會吧?), Parameter, REVOKE, SCOPE, SELECT ALL, Stored Procedure, UNKNOWN, UPDATE, BATCH...
- 要指定Scope => SELECT ... FROM Scope() WHERE "scope" = "All Sites"...
- CINTAINS精確比對,FREETEXT類似比對
- LIKE, string/date/timestamp/numeric可以用大小於比對, NULL代表未定義
- WHERE LastModifiedTime <=DATEADD (DAY, -2, DATEADD (HOUR, -4, GETGMTDATE()))
- ARRAY [1,2] < ARRAY [1,2,3]
- URL法
- 參數: k-關鍵字, s-Scope, v=date or relevance, start=頁數
- Enterprise Search Query Object Model
- Web Part or ASPX
- Microsoft.Office.Server.dll, Microsoft.Office.Server.Search.dll, Microsoft.SharePoint.dll
- 物件
- Query 內部用,請用以下二選一
- FullTextSqlQuery SQL查詢
- KeywordQuery Keyword語法
- 用哪一個物件? 複雜時KeywordQuery會無法勝任,就用FullTextSqlQuery
- Web Service: httq://Server_Name/[sites/][Site_Name/]_vti_bin/search.asmx
- Query只傳回Title, Desc, Date, Relevance,QueryEx還可傳回Rank, Author, Size, Path...等。
- QueryEx傳回DataSet!! (Yahoo~~~)
- 自訂結果存取權限管控,決定User該不該看到該筆查詢: ISecurityTrimmer
- 客製查詢結果: 修改XSLT
- 客製查詢中心
- 寫程式管理Search Content、Metadata、Scope、Keyword...
- Featured Search: 在查詢結果中混入其他來源的結果(置入性行銷?)
- 佛心來著的Sharepoint Search Service Tool: 可以輔助產生Query Syntax、馬上看結果的好東西
Comments
Be the first to post a comment