Share via


使用 SharePoint 2013 的查詢規則在內容搜尋中整合人員中繼資料

英文原文已於 2012 年 8 月 20 日星期一發佈

是的,這真的是有點冗長又可笑的標題;那麼,我在這裡要討論的是什麼呢?讓我這樣說吧 – 幾天前,我看到一個縈繞許久的問題,就像這個:在我的機構中,我有一些在不同部門工作的同事,像是銷售部門、財務部門等等。當有人在查詢中輸入「銷售管理創投」,我就想要讓在銷售部門工作的其他同仁也能看到這個提問。沒錯,這聽起來是 SharePoint 2013 中相當酷的「查詢規則」新使用功能。

首先,讓我們先回過頭來看看我們在這裡將會用到的相關啟用功能。在 SharePoint 2013 中,當你從 Active Directory 匯入設定檔時,它會自動在 [受管理的中繼資料服務] (Managed Metadata Service) 中填入一個特別的字詞組。事實上,它會實際建立一個叫做 [人員] (People) 的主群組並填入三個字詞組:[部門] (Department)、[職稱] (Job Title) 和 [地點] (Location) (注意: 我無法保證當產品發行時,這三個字詞組都還會存在;最後有可能只會剩下兩個)。在設定檔匯入的過程期間,每一個字詞組會針對這三個屬性的每一個,與所有使用者的唯一值一起填入。這的確在剛剛的問題上幫了很大的忙,因為當我查看我的 MMS 時,我會在我的 [部門] (Department) 清單中看到 [銷售] (Sales);這是因為我在 AD 中讓使用者擁有他們 [部門] (Department) 屬性的值:

很好,現在讓我們繼續接著建立查詢規則。就如同我在我的第一篇文章中所提到的查詢規則 (https://blogs.msdn.com/b/sharepoint_cht/archive/2012/09/20/sharepoint-2013-using-query-rules.aspx),我們要做的第一件事就是設定我的規則何時應該執行的條件。在本例中,我們要使用 [進階查詢文字比對] (Advanced Query Text Match) 這個選項,然後選擇最後一個選項,也就是 [查詢包含此字典中的項目:] (Query contains an entry in this dictionary:)。現在,會看到它有一個下拉式選取器,但不幸的是這會有點引人誤解。我們在這裡真正要做的是在選取器的正下方,按一下 [從分類中匯入] (Import from taxonomy) 連結。完成這個步驟之後,我們會看到標準的 MMS 選擇器;接著,我只要展開我的本機 MMS 執行個體然後再按一下 [部門] (Department) 字詞組,因為我想要我的規則在查詢文字包含我的機構 [部門] (Department) 的內容時執行。

在我的規則的下一個部分,我要選取「所有三個」核取方塊來檢視要查詢的字詞。所以,如果整個查詢字詞和 [部門] (Department) 名稱相同,或者查詢字詞的開頭或結尾是該 [部門] (Department) 的名稱,那麼,我就要執行我的規則。最後是規則設定的最後一個部分;如果有相符的字詞,那麼我想要把相符的字詞指定為 {subjectTerms},而剩下的字詞則指定為 {actionTerms}。所以,如果我們使用上述的例子來搜尋「銷售管理創投」,因為查詢字詞的開頭為「銷售」,在 MMS 中又是有效的 [部門] (Department) 值,我的查詢規則應該會符合:「銷售」為 {subjectTerms} 而「管理創投」為 {actionTerms}。以下是設定看起來的樣子:

現在,當我的規則執行時,我想要從銷售部門中新增一些人員到查詢結果的最上方。於是我開始進行設定查詢規則的下個部分,那就是我將採用的「 動作」。我在 [新增結果區塊] 連結上按一下來開啟對話方塊。在本例中,我想新增會顯示人員結果的「結果區塊」;所以,首先我要做的就是按一下 [搜尋此來源] 下拉式清單,接著把「查詢的原始來源」改成「本機人員結果 (系統)」。我先完成這項步驟,這樣一來,查詢產生器會在我修改及測試查詢時使用該來源。完成後,根據我的比對規則,我知道在 [部門] (Department) 中發現的任何字詞, 都會在特殊的字詞“{subjectTerms}”中。為了使用它,我會在 [啟動查詢產生器] 按鈕上按一下,這樣我就可以修改查詢。我會刪除任何在 [查詢文字] (Query text) 編輯區域中的現有文字,接著按一下 [屬性篩選] (Property filter) 下拉式清單、再按一下 [顯示所有受管理的屬性] 選項。這樣一來就會在下拉式清單重新填入所有受管理的屬性,然後我再從該清單中選取 [部門] (Department)。在限定詞下拉式清單中,我把 [包含] 改成 [相等] (Equals),然後在 [選取值] 下拉式清單中選取 [{subjectTerms} – 部門中的相符字典項目] ({subjectTerms} – the matched dictionary entry from Department),再按一下 [新增屬性篩選] (Add property filter) 按鈕。以下是看起來的樣子:

目前進行得十分順利。現在我要新增更多個人化功能;為了執行這項程序,我會按一下查詢產生器中的 [排序] (Sorting) 索引標籤。在本例中,我不會使用預設的排序模型,因為我要讓大家看到我用關係距離來做排序。所以,我不僅會在結果中顯示人員,還會依據在關係距離中哪個人與我最親密,來排序人員清單。執行這項程序,我只要使用 [排名模型] (Ranking Model) 下拉式清單並選取 [人員搜尋關係距離模型] (People Search Social Distance Model),就像這樣:

現在,我可以按一下 [測試] (Test) 索引標籤並試試看我的新查詢。依預設,你應該會看到零筆結果;這是因為它沒有 {subjectTerms} 變數的值。若要以實際查詢準則來進行測試,按一下[顯示更多] 連結然後在 {subjectTerms}*: 編輯方塊中輸入銷售,接著按一下 [測試] 查詢按鈕。我用不同的排名模型進行測試來確認它如我所要的效果執行,而它確實辦到了。所以我按一下 [確定] 按鈕來儲存我的查詢變更。

現在我要為我的查詢規則所做的最後一件事就是在我的區塊下方顯示連結,讓別人可以按一下來找到在搜尋到的任何 [部門] (Department) 中工作的所有人員。在我繼續進行之前,我要告訴你更詳細的資訊:我會在最後的結果中呈現圖片,而你會看到 [顯示更多] 連結。在本文中,我實際上結合了兩張圖片:一張有 [顯示更多] 連結,另外一張則沒有。這樣做是因為 [顯示更多] 連結功能在 Beta 2 中運作不一致。所有連結應該由 RTM 執行,但是它目前有時會顯示,更多時候則不會顯示。我只是碰巧拿了之前研究結果中有包含該連結的螢幕擷取畫面。我在這裡提到這點,讓你在使用 Beta 2 發現有時會顯示連結有時則不會的時後,不會過於沮喪。

儘管如此,為了要執行我在上述段落中提到的這項功能,我選取了 [前往下列 URL 的「更多」連結] (“More”link goes to the following URL) 選項並在下列欄位中輸入:peopleresults.aspx?k=Department:{subjectTerms}。同時,我也決定要顯示三個相符結果;如上所述,讓它們顯示在所有搜尋結果中的最上方。於是,現在我的完整 [結果區塊] (Result Block) 對話方塊看起來像這樣:

既然已經完成了,我現在可以來進行測試。我對「銷售管理創投」進行查詢,而下列是我的查詢結果看起來的樣子:

(請注意,這是你會看到我必須在此刻貼上 [顯示更多] 連結的地方)。很酷的是,Rocky 會顯示在搜尋結果的最上方,因為在我的機構中我是他的主管;所以,我們看到了關係距離排名演算法的運作方式。如果我將游標停放在結果中顯示的任何人名上,那麼我可以看到他們最近發佈文件的清單,就像這樣:

最後,當我在 [顯示更多] 連結上按一下,會帶我回到人員搜尋結果頁面,而我會看到所有在銷售部門工作的同事;當我將游標停放在任何人的名字上,我可以看到他們最近做了什麼、他們的個人資料頁面等等。

現在來為此次習做個總結吧。我們採用了非常真實的客戶需求,使用最新查詢規則以及 SharePoint 2013 中的設定檔匯入功能,以用來建立完全不需要撰寫程式碼的解決方案,並提供了許多功能。我希望你能繼續查看並使用查詢規則。

這是翻譯後的部落格文章。英文原文請參閱 Integrating People Metadata In Content Searches Using Query Rules in SharePoint 2013