停止词是无功能意义的词,比如is 、a 、are 、”的”,“得”,“我” 等,这些词会在句子中多次出现却无意义,所以在分词的时候需要把这些词过滤掉。
测试于:Solr 4.5.1, mmseg4j 1.9.1, Jdk 1.6.0_45, Tomcat 6.0.37 | CentOS 5.7
我这里拿名为test的core做例子。
准备停止词
在solr home下建dic目录,里边放需要用到的停止词文件,文件中每行一词,此处为测试仅加入了“的”。目录形如:
/root/solr-4.5.1/example/solr/dic/stopwords.txt
修改schema,加入停止词过滤:
[root@devnote ~]# vi solr-4.5.1/example/solr/test/conf/schema.xml
在如下图的位置增加filter配置
<filter class="solr.StopFilterFactory" ignoreCase="true" words="/root/solr-4.5.1/example/solr/dic/stopwords.txt"/>
重启tomcat
效果图
设置前:
设置后:
相关说明
- stopwords文件网上有一些共享的,可以拿来用用;否则如果不嫌麻烦,自己一个一个加也行;
- 如果stopwords文件是从网上down的或者是在windows上编辑后上传到服务器上的,非常容易出异常导致core起不来。推荐直接复制这些词到服务器的文件中,然后保存;
- 因为我配置的content字段使用的是textMaxWord类型,如果你用的是textComplex或其他类型,请在相应位置处配置;
- 有些情况,如获取分词数量排行,做分词云,那么需要删除旧的索引,重新生成;
- MMST:com.chenlb.mmseg4j.analysis.MMSegTokenizer
SF:org.apache.lucene.analysis.core.StopFilter