SharePoint 2013 搜索——問答


說明

這是一篇SharePoint的問題匯總帖。由於我主要關心使用SharePoint來完成一些搜索的功能,所以涉及的問題大多數和搜索有關。問題的解決一部分是來自網友的博客,一部分是社區朋友的指導,還有就是微軟的技術支持提供的解答。在本文中會盡量給出出處,但無法做到面面俱到,特此聲明。

另外,本文同樣是跟進帖,會隨着時間的推移而添加內容。

遷移(從SP2010到SP2013)

主要是在SP2013中不需要FAST Search Server服務器了,FAST在SP2013作為搜索服務提供。同時,SP2013優化了SP2010中的一些問題(例如,移除了淺表精簡,優化了深度精簡[注:淺表精簡會導致精簡面板不可用的問題]),作為代價,SP2013的搜索移除了FAST Search支持的一些特性,例如配置腳本執行,特定類型的連接器,FAST的web爬網等(特定的外部數據使用BCS模型完成,對web則使用內容源爬網),這些都是為了易用性。不過,對於中文用戶而言,最蛋疼的莫過於移除了對中文的詞干分解,導致句子或者短語無法在搜索結果中高亮顯示(2013/5/27,解決方式:為結果源啟用FQL,就可以正常的高亮顯示了)。

關於這個主題,MSDN上有官方的說明,參照:http://technet.microsoft.com/en-us/library/ff607742.aspx

屬性提取

注意,這里的屬性提取有別於“自定義屬性提取程序(更好的翻譯我覺得應該是鑽取)”,這里指的是“外部內容處理管道”(SP2010的說法)。在SP2010中可以在FAST的bin目錄下編寫一個Console應用程序來提取屬性,同時需要配置好xml文件,在SP2013中只需要編寫一個WCF服務,然后將使用PowerShell將這個服務注冊給SharePoint的SSA(SearchServiceApplication)就可以了,非常方便。相關的鏈接如下:

http://technet.microsoft.com/en-us/library/ff607742.aspx
在 SharePoint Server 2013 中規划爬網和聯合
http://technet.microsoft.com/zh-cn/library/jj219577.aspx
在 SharePoint Server 2013 中創建和部署自定義實體提取程序
http://technet.microsoft.com/zh-cn/library/jj219480.aspx
Content Enrichment in SharePoint 2013(如何通過代碼來豐富我們需要具體提取規則)
http://www.c-sharpcorner.com/UploadFile/d2ee01/content-enrichment-in-sharepoint-2013/

另外SP2013還改進了一點,就是提取的屬性直接變成了托管屬性,在SP2010中是爬網屬性,還需要配置映射。有段時間我非常關注New-FASTSearchMetadataCrawled Property這個cmdlet,現在看來應該就是為這個內容鑽取准備的,在SP2013中已經不被支持。

另外,在注冊這個服務的時候,記得使用觸發器表達式,以防止對所有的內容應用提取器,從而防止大幅降低爬網性能。

配置查看重復和折疊

通過搜索結果頁面的核心搜索結果webpart的配置,可以出現一個“查看重復項”的按鈕,點擊這個按鈕SP會列出所有的相同的項目(通過內容計算出fid);如果編程來實現搜索的話,就可以使用折疊功能,通過某個托管屬性來將一部分結果規划為一組。詳細內容參考以下鏈接:

http://msdn.microsoft.com/zh-cn/library/ff521593(v=office.14).aspx   
http://msdn.microsoft.com/zh-cn/library/jj687488.aspx

備用訪問映射的配置

在[管理中心]-[配置備用訪問映射],點擊編輯公共區域URL,然后添加映射。如果欄目不夠用,則點擊添加,然后選擇類型就OK。

特別需要注意為80端口配置備用訪問映射的時候出現的問題。由於80端口是默認端口,所以將80端口映射到另外一個端口(通常是外網)的時候,外部訪問需要帶端口訪問,這個時候備用訪問映射將不工作,然而又無法顯示指定80端口訪問。所以,一般的解決方案是,為IIS站點(SP2013)添加一個綁定,然后對這個綁定(不是80)做映射。

修正:這里還要求映射的端口和目標端口一致。例如,內網的10086,外網也應該是10086。

在SP2013中不可用的內容

無法配置對腳本執行爬網(爬網時執行腳本)。

“服務器名稱映射”這個功能僅僅是用來重定向結果的,但是《遷移》一文將他作為“在對URL爬網前修改URL”的遷移路徑(其實也說得過去)。

規划爬網規則

爬網規則越前優先級越高。在SP中,不指定爬網規則的情況下,爬網很奇怪,所以,一般建議指定最后兩個爬完規則為:http://*,https://* 為排除。

另外,僅使用URL上的鏈接而不對URL本身進行爬網這一條指定的時候需要注意,優先級盡量低,或者不要和你想收錄的頁面URL匹配,不然的話會被排除的。

定制搜索結果的模板

在SP2013中可以使用javascript和css來定制搜索結果,非常方便,參考這個博友的博客。

http://blog.csdn.net/farawayplace613/article/details/8455085

需要注意的是,如果修改了模板,需要將狀態為“草稿”的模板發布,另外,如果希望匿名用戶看到更改,需要發布整個頁面。

規划搜索服務器場的拓撲

在 SharePoint Server 2013 中管理搜索拓撲
http://technet.microsoft.com/zh-cn/library/jj219705.aspx
在 SharePoint Server 2013 中管理搜索組件
http://technet.microsoft.com/zh-cn/library/jj862354.aspx
在 SharePoint Server 2013 中管理索引組件
http://technet.microsoft.com/zh-cn/library/jj862355.aspx
在 SharePoint Server 2013 中更改默認搜索拓撲
http://technet.microsoft.com/zh-cn/library/jj862356.aspx
SharePoint Server 2013 中的搜索概述
http://technet.microsoft.com/zh-cn/library/jj219738.aspx

還可以參考我的另一篇文章:

http://www.cnblogs.com/lightluomeng/archive/2013/03/15/2960977.html

聯合搜索

在SP2010中可以聯合支持OPenSearch1.0/1.1的公共搜索引擎的結果,在SP2013中也是可以的,參考這篇文章:

SharePoint 2013: Federated Search Deep Dive – Twitter 
http://melcher.it/2012/11/sharepoint-2013-federated-search-deep-dive-twitter/

主要問題其實是,如何設置源URL,這里給出bing的可用的URL:

http://www.bing.com/search?q={?searchTerms}&format=rss&Market=en-US

http://www.bing.com/search?q={?searchTerms}&format=rss&Market=zh-cn

另外,還可以參考以下兩篇文章,解決布局的問題。

http://blogs.3sharp.com/2013/01/04/build-a-federated-result-source-for-sharepoint-2013-search-part-1/

http://melcher.it/2012/11/sharepoint-2013-federated-search-deep-dive-twitter/#!prettyPhoto

對數據庫爬網(非SQL,未被支持的數據庫)

這里有幾個備選方案供參考:
外部數據簡介
http://office.microsoft.com/zh-cn/sharepoint-server-help/introduction-to-external-data-HA102891586.aspx
開發自定義連接器(可能的一個備選方案),SharePoint 2013 中的搜索連接器框架
http://msdn.microsoft.com/library/38560a3b-69c6-4a56-97ca-3625bbd5755e.aspx
SharePoint 2013: MyFileConnector custom BCS indexing connector sample
http://code.msdn.microsoft.com/office/SharePoint-2013-MyFileConne-79d2ea26       

實現一個webservice,然后注冊給SharePoint                                               

 2010 http://msdn.microsoft.com/zh-cn/library/ff464398.aspx

 2013 http://msdn.microsoft.com/library/38560a3b-69c6-4a56-97ca-3625bbd5755e.aspx

如何配置匿名訪問

總的來說就是要在WebApplication和Page兩個地方配置匿名。

首先,在應用服務管理(WEB)中找到80(非管理應用)應用,然后點擊“身份認證程序”,然后點擊文字為“默認”的鏈接,在出現的窗口中,點擊“啟用匿名訪問”。然后在指定的頁面中,點擊“編輯”-“權限”(或者是,設置-權限-匿名)。

運行配置向導連接到數據庫失敗

提示是:運行SP2013配置向導的時候提示無法連接到master數據庫。

需要使用評估版(SQL 2012)而不是Express版。

索引重新分區失敗

http://technet.microsoft.com/zh-cn/library/jj862355.aspx

一般來講,重置內容索引之后規划分區都會成功。問題處在已經爬網然后要分區的時候,這個時候可能需要注意內存和磁盤,這兩個可用空間可能導致問題。出錯提示為:Topology activation failed.Redistribution of data failed for index components.

搜索管理中心的內內容源狀態顯示為已被系統暫停

一般出現在對SSA執行暫停指令之后(為了索引重分區),調用以下方法:

PS C:\Users\administrator.OW> $ssa = Get-SPEnterpriseSearchServiceApplication
PS C:\Users\administrator.OW> $ssa.ResumeAfterIndexRepartitioning()
True
PS C:\Users\administrator.OW>

增量爬網和外部內容處理

並不是特別確定,但是根據我的測試,增量爬網會將對象發送給外部內容處理管道。

搜索組件在管理中心中顯示為紅叉

等待。

修改拓撲。

重建SearchServiceApplication。

重建場。

定制搜索結果高亮的顏色

F12可以看到以下內容:

如圖所示:高亮顯示通過兩個class確定。第一層是位置,表示標題或者摘要;第二層則是高亮的class第一層有兩種情況:ms-srch-ellipsisms-srch-item-summary;第二層只有一種情況(我們關心的)。

而引用的csss文件的路徑如圖:

C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\WEB SERVER EXTENSIONS\15\TEMPLATE\LAYOUTS\2052\STYLES\THEMABLE

更改思路:將摘要的高亮設置為紅色,粗體;將標題的高亮設為暗紅色[#990000 ](由於其上下文是藍色的)。

修改頁面上方的SharePoint字眼

主要是對母版頁下手,對搜索和搜索結果頁面而言,使用seattle。

可以在母版頁中加入腳本,更改指定位置的字樣:

    <script>
        $('div.ms-core-brandingText').text("啊啊啊啊啊啊");
    </script>

同時需要加入jquery的引用:   

<script src="http://code.jquery.com/jquery-latest.js"></script>

同時使用以下更改徽標的鏈接:   

$('a.ms-siteicon-a').attr("href", "http://yoursite.com");

注意:修改過的母版頁需要在管理中心中進行發布。

停止分布式緩存服務

MSDN上給出的cmdlet有出入,如下:

Stop-SPDistributedCacheServiceInstanceGracefullyOnLocalServer

Remove-SPDistributedCacheServiceInstanceOnLocalServer

配置分布式緩存服務

要點如下:

需要停止服務器上的所有分布式緩存服務,步驟參考MSDN。

在執行Set-CacheHostConfig CMDLET的時候,只提供CacheSize參數,然后后續會要求提供computernameCachePort,這樣就可以配置成功,如果一次性提供所有參數,則配置失敗。

另外,使用computername而不是hostname

http://technet.microsoft.com/zh-cn/library/jj219613.aspx

如圖:

更正,后來我又碰到這個問題,呃...發現上面的解決方式是胡扯...這里更正下。

正確的做法是啟動一個服務(好吧我承認,PowerShell顯示這個服務本來就是開啟的),(RemoteRegister);如果啟動后沒解決問題,那么應該重啟另一個服務(Restart-CacheCluster)。

這是從MSDN社區找到的解決方案:http://social.msdn.microsoft.com/Forums/zh-CN/velocity/thread/e977c98d-32e6-4b58-8947-6248cdcf5020

2013/5/31更正:如果還是沒解決問題,配置前可以先執行下Use-CacheCluster,然后再進行配置。

http://blogs.technet.com/b/sharepoint_ramblings/archive/2013/05/11/what-every-sharepoint-admin-should-know-about-troubleshooting-and-managing-the-newsfeed-amp-distributed-cache.aspx

這篇文章提供了修正分布式緩存節點的問題,具體做法是:

如果在某一台緩存主機中執行cmdlet[Use-CacheCluster]提示連接錯誤,那么表示這台緩存主機的分布式緩存服務出於不正常的狀態。於是使用cmdlet[Get-SPServiceInstance]獲取SharePoint服務實例,使用過濾操作找出分布式緩存服務。需要注意,這個操作會返回服務器場中所有的分布式緩存服務,需要從中過濾出指定主機名稱和disabled狀態的分布式緩存服務實例。通過對象調用其$instance.Delete()方法注銷實例。

此時,如果喜歡重新添加分布式緩存服務,只需要執行cmdlet[Add-SPDistributedCacheServiceInstance]

另外,正常關閉分布式緩存服務的兩個cmdlet指令是:

Stop-SPDistributedCacheServiceInstance -Graceful

Remove-SPDistributedCacheServiceInstance

自定義分詞

可以對中文進行自定義分詞,需要實現幾個C++接口(樓主我不會)。

http://msdn.microsoft.com/zh-cn/library/jj163981.aspx

http://msdn.microsoft.com/zh-cn/library/ms693186(v=vs.85).aspx

部署規划幾則(最佳實踐)

http://technet.microsoft.com/zh-cn/library/ff621103.aspx

http://technet.microsoft.com/zh-cn/library/ff607864.aspx

http://technet.microsoft.com/zh-cn/library/ff607811.aspx

禁用/啟用核心搜索結果的webpart的詞干分解

默認開啟的,中文的話,禁用/啟用都是一樣的(參考第一條)。

http://technet.microsoft.com/en-us/library/gg549987.aspx

REST API配置相關

SharePoint有一套REST風格的API,這里僅提及和搜索相關的API配置,計划在后續的文章中詳述這些內容,這里先引用以下資料:

為SharePoint2013搜索啟用匿名緩存,從而提升面向公眾的搜索性能。

http://blog.mastykarz.nl/anonymous-search-results-cache-sharepoint-2013-public-websites/

使用ULS驗證緩存,參考:http://ulsviewer.codeplex.com/

SharePoint2013的日志位於目錄:

C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\LOGS

為SharePoint的REST搜索API啟用匿名搜索。

http://blog.mastykarz.nl/configuring-sharepoint-2013-search-rest-api-anonymous-users/

在使用REST API進行搜索的時候,需要對特殊字符進行轉換,參考:

http://www.nowamagic.net/librarys/veda/detail/327

...

更多。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM