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朝古都,陕西省会
那么在下次搜索西安时也会带出后面的。
针对每一个商品设置搜索关键词,同步到扩展词库中;
全局设置不想被分词的词,放到中止词库中;
全局设置想关联的同义词,放到同义词中;