以前寫了一篇關於Online Relevance Search的博文,而後又看到羅勇大神關於Full Text Index的博文:Dynamics CRM中一個查找字段引起的【血案】,因而準備寫點關於Full Text Index Stopwords相關的介紹,也算是對Dynamics 365 Search方式相關的一個知識點記錄。html
關於如何開啓Dynamics 365 Full Text Index,這個就很少加贅述了,基礎功能在網上仍是很容易找到的,在Enable Full Text Index的時候,CRM會有提示,大體意思是要等24小時才能生效。Maintenance Job如何修改執行時間,能夠參考羅勇大神的文章:sql
update MSCRM_CONFIG.dbo.ScaleGroupOrganizationMaintenanceJobs set NextRunTime = 'UTC時間' where OperationType = 15
注意RunTIme是UTC時間,能夠大大減小Maintenance Job的等待時間,要不默認是會24小時執行一次。數據庫
當Full Text Index功能徹底啓用以後,咱們固然會火燒眉毛地想要去嘗試下新功能的效果,通常的搜索問題不大,可是有時候,你會發現,一些做爲過濾條件的詞語,就是搜索不到結果。例如,如今有一個account 「Mr. To」優化
當用to做爲查詢條件的時候,是搜索不出這個account的ui
而致使這個問題的緣由就是Stopwords in Stoplist。spa
當Full Text Index功能開啓的時候,會有一個系統Stoplist做用於CRM Organization DB,做用於Full Text Index涉及到的Entity,也就是DB的Tables。3d
這個系統Stoplist來自於系統數據庫Resource Database,一個在Management Studio上不可見的Database,可是在SQL安裝目錄下,能夠找到它的數據庫文件code
這個數據庫暴露出來的內容是ReadOnly的。htm
既然咱們知道有Stoplist這個功能的存在,那麼咱們固然會想到,是否是能夠建立本身的過濾詞組來知足特定的業務需求呢?答案是確定的。blog
CRM Database -> Storage -> Full Text Stoplist -> New Full-Text Stoplist
在彈出界面,填上Stoplist的名字,而後選擇Stoplist如何建立
這裏的建議是「Create from the system Stoplist」,出於兩方面的考慮:首先並非全部的stopwords,業務邏輯上都不須要;其次是有些words是公共的,在使用的時候是有優化的。
建立完成以後,咱們先來確認下word
右鍵Stoplist 「demo」,點擊Properties
選擇「Delete stop word」,而後填寫要去掉的word,以及語言
以後再執行下查詢
ALTER FULLTEXT INDEX ON dbo.Accountbase SET STOPLIST = demo;
這裏有可能遇到的問題是Rebuild是灰掉的,可是能夠選擇上一層「Full Text Catalogs」,右鍵Rebuild
IIS reset以後,查詢效果
Stoplist 官方資料:Configure and Manage Stopwords and Stoplists for Full-Text Search