1. 常见的中文分词器有:极易分词的(MMAnalyzer) 、"庖丁分词"分词器(PaodingAnalzyer)、IKAnalyzer 等等。其中 MMAnalyzer 和 PaodingAnalzyer 不支持 lucene3.0及以后版本。
使用方式都类似,在构建分词器时
Analyzer analyzer = new [My]Analyzer();
2. 这里只示例 IKAnalyzer,目前只有它支持Lucene3.0 以后的版本。
首先需要导入 IKAnalyzer3.2.0Stable.jar 包
3. 示例代码
public class AnalyzerTest {
@Test
public void test() throws Exception {
String text = "An IndexWriter creates and maintains an index.";
/* 标准分词器:单子分词 */
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
testAnalyzer(analyzer, text);
String text2 = "测试中文环境下的信息检索";
testAnalyzer(new IKAnalyzer(), text2); // 使用IKAnalyzer,词库分词
}
/**
* 使用指定的分词器对指定的文本进行分词,并打印结果
*
* @param analyzer
* @param text
* @throws Exception
*/
private 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());
}
}
}
3. 如何扩展词库:很多情况下,我们可能需要定制自己的词库,例如 XXX 公司,我们希望这能被分词器识别,并拆分成一个词。
IKAnalyzer 可以很方便的实现我们的这种需求。
新建 IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<!-- 1,文件要是 UTF-8 编码。2,一行写一个词 -->
<!--用户可以在这里配置自己的扩展字典-->
<entry key="ext_dict">/mydict.dic</entry>
</properties>
解析:
<entry key="ext_dict">/mydict.dic</entry> 扩展了一个自己的词典,名字叫 mydict.dic
因此我们要建一个文本文件,名为:mydict.dic (此处使用的 .dic 并非必须)
在这个文本文件里写入:
北京XXXX科技有限公司
这样就添加了一个词汇。
如果要添加多个,则新起一行:
词汇一
词汇二
词汇三
...
需要注意的是,这个文件一定要使用 UTF-8编码
4. 停用词:
有些词在文本中出现的频率非常高,但是对文本所携带的信息基本不产生影响,例如英文的"a、an、the、of",或中文的"的、了、着",以及各种标点符号等,这样的词称为停用词(stop word)。
文本经过分词之后,停用词通常被过滤掉,不会被进行索引。在检索的时候,用户的查询中如果含有停用词,检索系统也会将其过滤掉(因为用户输入的查询字符串也要进行分词处理)。
排除停用词可以加快建立索引的速度,减小索引库文件的大小。
IKAnalyzer 中自定义停用词也非常方便,和配置 "扩展词库" 操作类型,只需要在 IKAnalyzer.cfg.xml 加入如下配置:
<entry key="ext_stopwords">/ext_stopword.dic</entry>
同样这个配置也指向了一个文本文件 /ext_stopword.dic (后缀名任意),格式如下:
也
了
仍
从
...
分享到:
相关推荐
赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-analyzers-common-6.6.0.jar; 赠送原API文档:lucene-analyzers-common-6.6.0-javadoc.jar; 赠送源代码:lucene-analyzers-common-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
Elasticsearch-analysis-ik 7.10.0 分词器是 Elasticsearch 在中文环境下的得力助手,它结合了 IK 分词器的强大功能和 Elasticsearch 的灵活性,为企业级搜索提供了坚实的基石。通过合理的配置和使用,可以显著提高...
在2.4.1这个版本中,Lucene已经包含了对中文分词的支持,可以与各种分词器如jieba、IK、HanLP等配合使用,实现更精准的中文搜索。Je-Analysis可以作为Lucene的分词插件,提供对中文文本的预处理服务,使得Lucene能更...
赠送jar包:lucene-sandbox-7.2.1.jar; 赠送原API文档:lucene-sandbox-7.2.1-javadoc.jar; 赠送源代码:lucene-sandbox-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-sandbox-7.2.1.pom; 包含翻译后的API...
赠送jar包:lucene-core-6.6.0.jar; 赠送原API文档:lucene-core-6.6.0-javadoc.jar; 赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene...
lucene3.3的全部jar包ant-1.7.1.jar ant-junit-1.7.1.jar commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-compress-1.1.jar commons-digester-1.7.jar commons-logging-1.0.4.jar icu4j-4_8.jar ...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
接着,在索引和搜索阶段,Lucene会使用该分词器对中文文本进行处理。 6. **高亮器的配置与使用** 高亮器的配置涉及设置高亮样式、选择要高亮的字段以及定义匹配策略。在搜索后,使用Highlighter对查询结果进行处理...
赠送jar包:lucene-backward-codecs-6.6.0.jar; 赠送原API文档:lucene-backward-codecs-6.6.0-javadoc.jar; 赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-backward-codecs-7.2.1.jar; 赠送原API文档:lucene-backward-codecs-7.2.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-suggest-6.6.0.jar; 赠送原API文档:lucene-suggest-6.6.0-javadoc.jar; 赠送源代码:lucene-suggest-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-suggest-6.6.0.pom; 包含翻译后的API...
共6页19.Lucene过滤 共4页20.Lucene分词器1 共3页21.Lucene分词器2 共9页22.Lucene分词器3 共4页23.Lucene项目实战1 共6页24.Lucene项目实战2 共6页25.Lucene项目实战3 共6页26.Lucene项目实战4 共6页27.Lucene项目...
赠送jar包:lucene-highlighter-6.6.0.jar; 赠送原API文档:lucene-highlighter-6.6.0-javadoc.jar; 赠送源代码:lucene-highlighter-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-highlighter-6.6.0.pom;...
这个分词器在Lucene的基础上,针对中文特性进行了优化,提高了分词效率和准确性,尤其适合对易读性和速度有较高要求的项目。 "lucene-core-2.4.1.jar"是Lucene的核心库,包含了Lucene的基本功能,如索引构建、查询...
赠送jar包:lucene-backward-codecs-7.3.1.jar; 赠送原API文档:lucene-backward-codecs-7.3.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-core-6.6.0.jar; 赠送原API文档:lucene-core-6.6.0-javadoc.jar; 赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene...