Dynamics 365-Full Text Index on Stopwords

以前寫了一篇關於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

1. 建立Stoplist

CRM Database -> Storage -> Full Text Stoplist -> New Full-Text Stoplist

在彈出界面,填上Stoplist的名字,而後選擇Stoplist如何建立

這裏的建議是「Create from the system Stoplist」,出於兩方面的考慮:首先並非全部的stopwords,業務邏輯上都不須要;其次是有些words是公共的,在使用的時候是有優化的。

建立完成以後,咱們先來確認下word

2. Remove Stopword

右鍵Stoplist 「demo」,點擊Properties

選擇「Delete stop word」,而後填寫要去掉的word,以及語言

以後再執行下查詢

3. 設置Stoplist做用於Account表

ALTER FULLTEXT INDEX ON dbo.Accountbase SET STOPLIST = demo;

4. Rebuild CRMFullTextCatalog

這裏有可能遇到的問題是Rebuild是灰掉的,可是能夠選擇上一層「Full Text Catalogs」,右鍵Rebuild

5. 效果

IIS reset以後,查詢效果

 

 Stoplist 官方資料:Configure and Manage Stopwords and Stoplists for Full-Text Search

相關文章
相關標籤/搜索