solr服務器配置好在搜索時常常會搜出無關內容,把不應分的詞給分了,致使客戶找不到本身須要的內容,那麼咱們就從配置詞典入手解決這個問題。web
首先須要知道自帶的詞典含義:tomcat
中止詞:中止詞是無功能意義的詞,好比is 、a 、are 、」的」,「得」,「我」 等,這些詞會在句子中屢次出現卻無心義,因此在分詞的時候須要把這些詞過濾掉。服務器
擴展詞庫:就是不想讓哪些詞被分開,讓他們分紅一個詞。app
同義詞:假設有一個電子商務系統,銷售書籍,提供了一個搜索引擎,一天,市場部的人要求客戶在搜索書籍時,同義詞就是好比輸入「電子」,除了展現電子相關的書籍,還須要展示「機器」相關的書籍。webapp
將IKAnalyzer解壓文件夾下的stopword.dic和IKAnalyzer.cfg.xml複製到tomcat/webapps/solr/WEB-INF/classes下,再新建一個ext.dic,裏面的格式和stopword.dic一致。ui
並修改IKAnalyzer.cfg.xml以下面的格式能夠配置多箇中止詞或者擴展詞庫文件。搜索引擎
<!-- lang: xml --> <properties> <comment>IK Analyzer 擴展配置</comment> <!--用戶能夠在這裏配置本身的擴展字典--> <entry key="ext_dict">ext.dic;</entry> <!--用戶能夠在這裏配置本身的擴展中止詞字典--> <entry key="ext_stopwords">english_stopword.dic;stopword.dic</entry>
在solr數據文件conf目錄下schema.xml 中加入如下兩個字段:spa
<!-- lang: xml --> <field name="id" type="string" indexed="true" stored="true" required="true" /> <field name="description" type="text_syn" indexed="true" stored="true" />
在 schema.xml 中增長 text_syn 類型的定義:設計
<!-- lang: xml --> <fieldType name="text_syn" class="solr.TextField"> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
在相同的conf目錄下的 synonyms.txt 中增長code
西安,長安,13朝古都,陝西省會
那麼在下次搜索西安時也會帶出後面的。
針對每一個商品設置搜索關鍵詞,同步到擴展詞庫中;
全局設置不想被分詞的詞,放到中止詞庫中;
全局設置想關聯的同義詞,放到同義詞中;