SimpleAnalyzer
StandardAnalyzer
WhitespaceAnalyzer
StopAnalyzer
测试代码:
import java.io.Reader;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.WhitespaceAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
public class TestAnalyzer {
private static String testString1 = "The quick brown fox jumped over the lazy dogs";
private static String testString2 = "xy&z mail is - xyz@sohu.com";
public static void testWhitespace(String testString) throws Exception{
Analyzer analyzer = new WhitespaceAnalyzer();
Reader r = new StringReader(testString);
Tokenizer ts = (Tokenizer) analyzer.tokenStream("", r);
System.err.println("=====Whitespace analyzer====");
System.err.println("分析方法:空格分割");
Token t;
while ((t = ts.next()) != null) {
System.out.println(t.termText());
}
}
public static void testSimple(String testString) throws Exception{
Analyzer analyzer = new SimpleAnalyzer();
Reader r = new StringReader(testString);
Tokenizer ts = (Tokenizer) analyzer.tokenStream("", r);
System.err.println("=====Simple analyzer====");
System.err.println("分析方法:空格及各种符号分割");
Token t;
while ((t = ts.next()) != null) {
System.out.println(t.termText());
}
}
public static void testStop(String testString) throws Exception{
Analyzer analyzer = new StopAnalyzer();
Reader r = new StringReader(testString);
StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
System.err.println("=====stop analyzer====");
System.err.println("分析方法:空格及各种符号分割,去掉停止词,停止词包括 is,are,in,on,the等无实际意义的词");
//停止词
Token t;
while ((t = sf.next()) != null) {
System.out.println(t.termText());
}
}
public static void testStandard(String testString) throws Exception{
Analyzer analyzer = new StandardAnalyzer();
Reader r = new StringReader(testString);
StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
System.err.println("=====standard analyzer====");
System.err.println("分析方法:混合分割,包括了去掉停止词,支持汉语");
Token t;
while ((t = sf.next()) != null) {
System.out.println(t.termText());
}
}
public static void main(String[] args) throws Exception{
// String testString = testString1;
String testString = testString2;
System.out.println(testString);
testWhitespace(testString);
testSimple(testString);
testStop(testString);
testStandard(testString);
}
}
运行结果:
xy&z mail is - xyz@sohu.com
=====Whitespace analyzer====
分析方法:空格分割
xy&z
mail
is
-
xyz@sohu.com
=====Simple analyzer====
分析方法:空格及各种符号分割
xy
z
mail
is
xyz
sohu
com
=====stop analyzer====
分析方法:空格及各种符号分割,去掉停止词,停止词包括 is,are,in,on,the等无实际意义
的词
xy
z
mail
xyz
sohu
com
=====standard analyzer====
分析方法:混合分割,包括了去掉停止词,支持汉语
xy&z
mail
xyz@sohu.com
分享到:
相关推荐
在这个入门教程中,我们将使用Lucene 4.7版本,结合IK Analyzer,一个专门针对中文分词的开源分析器,来学习如何构建一个简单的搜索引擎。 首先,你需要下载Lucene 4.7和IK Analyzer 2012-FF Hotfix 1。Lucene的...
6. **Lucene接口集成**:为了让C#分词器与Lucene接口兼容,需要理解并实现Lucene的分析器(Analyzer)接口,以便于在索引和查询过程中正确处理中文文本。 7. **性能优化**:在实际应用中,分词速度和资源占用是重要...
3. 多语言支持:如果系统需要处理多种语言的搜索,可以考虑使用其他语言分析器,如EnglishAnalyzer,配合Lucene的多Analyzer支持。 4. 日志监控:定期检查日志,监控搜索性能和错误,及时发现并解决问题。 总之,...
分词器的配置是灵活的,可以根据需求选择不同的分词策略,比如标准分词器(StandardAnalyzer)适用于大多数英文文本,而中文分词可能需要使用IKAnalyzer或SmartChineseAnalyzer等针对中文特性的分词器。 在运行这个...
System.out.println("当前使用的分词器:" + analyzer.getClass().getSimpleName()); TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(keyWord)); tokenStream.addAttribute...
IkAnalyzer是一款针对中文的开源分词器,基于Java编写,适用于Lucene、Solr等全文检索引擎。IkAnalyzer2012_V5在前一版本的基础上,增加了对新词汇的处理能力,改进了词典加载机制,提高了分词效率,使得在处理中文...
中文分词IKAnalyzer和高亮highlighter的使用”指出,这个主题将探讨如何在Lucene中应用IKAnalyzer进行中文分词,以及如何使用高亮器(highlighter)来突出搜索结果中的关键词。Lucene是Apache软件基金会的一个开放源...
通过设置ikanalyzer为Solr的默认分析器,可以确保在Solr中处理中文文本时,分词效果达到预期。 在实际应用中,可能会遇到以下兼容问题: 1. **版本匹配**:确保ikanalyzer版本与Lucene和Solr版本兼容,避免因版本...
- Lucene 6.x进一步优化了内存使用,增强了查询性能,并提供了更丰富的分析器选项,如标准分析器的升级,使得IKAnalyzer可以更好地与之配合。 - Lucene 7.x带来了更多性能提升,例如更优秀的倒排索引结构,以及对...
2. **配置分词器**:在Lucene.NET的索引创建阶段,需要配置Analyzer类,指定使用特定的分词器。例如,使用IK Analyzer可以创建`IKAnalyzer analyzer = new IKAnalyzer();`。 3. **字段分析**:在创建Document对象时...
《Lucene分词技术与IKAnalyzer详解》 在信息技术领域,搜索引擎是不可或缺的一部分,而Lucene作为Apache软件基金会的一个开放源代码项目,是Java语言开发的全文检索引擎库,为构建高效、可扩展的信息检索应用提供了...
这些方法可以处理一些常见的词汇组合,但也会产生歧义,如“中国银行”和“中国队”,分析器需要通过上下文判断正确的分词方式。 3. **停用词处理**:“的”、“和”、“在”等常用但对检索意义不大的词语被称为...
Lucene是一个高性能、全文本搜索库,而IKAnalyzer是一个专门针对中文分词的开源分析器,它们的结合能够有效地帮助我们处理中文文本的搜索需求。 首先,我们需要了解Lucene的基本概念。Lucene提供了完整的搜索索引...
- 为 Lucene 全文检索提供优化的查询分析器 IKQueryParser,通过歧义分析算法改进查询关键字的排列组合,提高了检索的精确度和命中率。 3. **分词效果示例** - 分词器能够准确识别并处理各种文本,例如在一段介绍...
在5.4版本中,Lucene进行了许多优化,包括改进了性能、提升了搜索准确性和内存效率,同时还引入了一些新特性,如更灵活的评分模型和新的分析器。 **IK Analyzer** IK Analyzer(智能中文分词器)是为了解决中文分词...
- **配置IK Analyzer**:在Lucene项目中,需要将IK Analyzer的jar包添加到类路径,并在配置文件中指定使用IKAnalyzer作为默认的分词器。 - **创建索引**:利用IK Analyzer进行中文文档的分词,然后使用Lucene的...
pinyinAnalyzer是Lucene的一个分析器,它利用了Pinyin4j的功能,能够将输入的中文文本分词并转化为拼音形式,以便于Lucene这样的全文搜索引擎进行索引和查询。而lucene-analyzers则是Lucene的一系列分析器集合,包含...
### Lucene4.0 IK分词器使用概览 #### IKAnalyzer:中文分词利器 IKAnalyzer是一款基于Java开发的开源中文分词工具包,自2006年首次发布以来,历经多个版本的迭代,已成为业界广泛认可的中文分词解决方案。其最初...
1. **配置与集成**:将IKAnalyzer配置到Lucene的分析器链中,确保在索引和搜索时都能使用IKAnalyzer进行分词。 2. **索引优化**:合理设置索引字段,如是否需要存储、是否需要倒排等,以平衡索引大小和搜索性能。 3....
分析器(Analyzer)是执行这些操作的类,可以根据不同的需求进行定制。 3. **索引(Indexing)**:索引是Lucene的核心功能之一,它将文本数据转化为可供快速检索的结构。索引过程涉及构建倒排索引(Inverted Index...