Lucene建立索引的时候,需要使用到分词器-Analyzer,分词器的作用就是将当前的文本按照分词规则进行分词,然后建立索引,检索结果的精确度很大程度上来自于索引的建立是否合理而准确。
lucene提供了一些内置的分词器:
- * SimpleAnalyzer 这个分词是一段一段话进行分
- * StandardAnalyzer 标准分词拿来分中文和ChineseAnalyzer一样的效果
- * PerFieldAnalyzerWrapper 这个很有意思,可以封装很多分词方式,还可以于先设置field用那个分词分
- * CJKAnalyzer 这个分词方式是正向退一分词(二分法分词),同一个字会和它的左边和右边组合成一个次,每个人出现两次,除了首字和末字
- * ChineseAnalyzer 这个是专业的中文分词器,一个一个字分
- * BrazilianAnalyzer 巴西语言分词
- * CzechAnalyzer 捷克语言分词
- * DutchAnalyzer 荷兰语言分词
- * FrenchAnalyzer 法国语言分词
- * GermanAnalyzer 德国语言分词
- * GreekAnalyzer 希腊语言分词
- * RussianAnalyzer 俄罗斯语言分词
- * ThaiAnalyzer 泰国语言分词
- * KeywordAnalyzer "Tokenizes" the entire stream as a single token. This is useful for data like zip codes, ids, and some product names.
- * PatternAnalyzer api讲这个分词方式很快,它是放在内存里面的
- * SnowballAnalyzer 经典分词用具 主要支持欧洲语言
- * StopAnalyzer 被忽略的词的分词器
- * WhitespaceAnalyzer 空格分词
这些分词器所提供的分词功能,其实并不能满足现实业务需求,比如上述的汉语分词器,其分词是通过一个字一个字的分词,那么:
“网易杭州研究院” 将分词成为 杭 、 州、 网、 易、 研、 究、 院
那么在进行检索的时候,通过这单字的检索,匹配结果暂且不论,单从使用上就有很大局限性,比如无法使用词语检索等,使用 “杭州” 检索&#