分词器
什么是分词器
采用一种算法,将中英文本中的字符拆分开来,形成词汇,以待用户输入关健字后搜索
为什么要分词器
因为用户输入的搜索的内容是一段文本中的一个关健字,和原始表中的内容有差别,
但作为搜索引擎来讲,又得将相关的内容搜索出来,此时就得采用分词器来最大限度
匹配原始表中的内容
分词器工作流程
步一:按分词器拆分出词汇
步二:去除停用词和禁用词
步三:如果有英文,把英文字母转为小写,即搜索不分大小写
package loaderman.analyzer; import java.io.StringReader; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.TermAttribute; import org.wltea.analyzer.lucene.IKAnalyzer; /** * 测试Lucene内置和第三方分词器的分词效果*/ public class TestAnalyzer { private static void testAnalyzer(Analyzer analyzer, String text) throws Exception { System.out.println("当前使用的分词器:" + analyzer.getClass()); TokenStream tokenStream = analyzer.tokenStream("content",new StringReader(text)); tokenStream.addAttribute(TermAttribute.class); while (tokenStream.incrementToken()) { TermAttribute termAttribute = tokenStream.getAttribute(TermAttribute.class); System.out.println(termAttribute.term()); } } public static void main(String[] args) throws Exception{ //Lucene内存的分词器 //testAnalyzer(new StandardAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀"); //testAnalyzer(new FrenchAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀"); //testAnalyzer(new RussianAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀"); //testAnalyzer(new ChineseAnalyzer(),"呢哈说我们的首都是北京呀"); //testAnalyzer(new CJKAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀"); //testAnalyzer(new CJKAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀"); //testAnalyzer(new FrenchAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀"");
testAnalyzer(new IKAnalyzer(),"呢哈说我们的首都是北京呀"); //testAnalyzer(new IKAnalyzer(),"上海自来水来自海上"); } }
2.6使用第三方IKAnalyzer分词器--------中文首选
需求:过滤掉上面例子中的“说”,“的”,“呀”,且将“首都”看成一个整体 关健字
步一:导入IKAnalyzer分词器核心jar包,IKAnalyzer3.2.0Stable.jar
步二:将IKAnalyzer.cfg.xml和stopword.dic和xxx.dic文件复制到MyEclipse的src目录下,
再进行配置,在配置时,首行需要一个空行
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 扩展配置</comment> <!-- 用户可以在这里配置自己的扩展字典 --> <entry key="ext_dict">/mydict.dic</entry> <!--用户可以在这里配置自己的扩展停止词字典 --> <entry key="ext_stopwords">/surname.dic</entry> </properties>
首都 注/mydict.dic文件
说 注/surname.dic文件
的
呀
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!