我们这次自习研究了一下ElasticSearch中的分词器,最终我们决定使用ik中文分词器,
https://github.com/medcl/elasticsearch-analysis-ik
这个分词器中有两种分词方式,一种是ik_smart一种是ik_max_word,前者是通过最粗粒度去进行分词,后者是通过最细粒度进行分词。我们研究之后,决定使用ik_max_word这个是把一句话穷举其中的所有词,比如“春眠不觉晓”分词成为:春眠、不觉、不觉晓、觉晓这几个,ElasticSearch的匹配算法是基于词频的TF/IDF算法,这个算法我们在数据科学导论学过,ik分词器还支持词库的热更新,不过我们这个用不到。一开始我们进行索引建立的时候,分词器老是不生效,后来才发现最新版本的是先创建索引,然后再创建mapping,创建mapping的时候才设置属性我ik_max_word。
如下:
{ "properties": { "content": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" } } }