Solr中配置分词器
为什么要用分词器:
在solr中搜索酒店:
使用条件查询:输入全名可以查到。
使用条件查询:输入部分名字查不到
对于关键词“北京首都大酒店”,用户输入
“北京首都大酒店”,
“北京大酒店”,
“首都大酒店”等,
最好都能搜索到想要的数据。这种搜索方式叫“全文检索”。
全文检索:
只要其中有,就算可以。
如:搜“北京”:
“中国,北京市”
“北京大兴国际机场”
“我爱北京天安门”
以上都可以算作搜索出的结果。
解决办法:
对关键词进行拆分:
如:“我爱北京天安门”
拆分:“我” “爱” “北京” “爱北京” “天” “天安” “天安门”
要对关键词进行拆分,需要用“分词器”。
百度:
分词器:
Word分词器
Ansj分词器
IKAnalyzer分词器 (我们用)
IKAnalyzer分词器
1.Jar包
IK分词器可在码云上下载。
下载下来的jar包:
把jar包放到solr项目WEB-INF中lib中:
2.Solr项目中配置IK
把IK自己的相关配置放到solr项目中WEB-INF中的classes文件夹中
IKAnalyzer.cfg.xml
mydict.dic
ext_stopword.dic
3.solr_home中配置分词器类型:
新建数据类型:
到solr_home中hotel中conf中schema.xml中添加:
注意:
index:对数据库导入的数据进行分词。
query:对用户输入的查询数据进行分词。
使用数据类型
4.重启Tomcat:
5.重新导入数据,重新建立索引:
6.solr测试分词效果
Solr点击Analysis选项看分词效果:
选择进行了分词的字段,如:keyword.
输入keyword数据
点击Analyse Values查看分词效果。
分词优化:
1.专用的词,当整体看,不分词。
如:白富美,高富帅。
到solr项目WEB-INF中classes中找到ext_dict.dic文件
打开,添加“白富美”,“白富美”将不再分词。
重启Tomcat测试:
“白富美”将不再分词。
mydic.dic中
在分词词典中添加“白富美”,白富美就会被分词器认为是一个词。
2.偏僻的词,无意义的词,语气词等,直接忽略:
到solr项目WEB-INF中classes中找到ext_stopwords.dic文件
solr测试“了”:
“了”会被solr中分词器直接忽视。