首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lucene StandardAnalyzer和EnglishAnalyzer有什么不同?

Lucene StandardAnalyzer和EnglishAnalyzer有什么不同?
EN

Stack Overflow用户
提问于 2013-06-10 00:45:58
回答 1查看 11.4K关注 0票数 14

我正在使用Lucene 4.3对英文推文进行索引,但是我不确定该使用哪个Analyzer。Lucene StandardAnalyzer和EnglishAnalyzer有什么不同?

此外,我还尝试使用以下文本测试StandardAnalyzer:"XY&Z公司- xyz@example.com“。输出是: xy corporation example.com,但我认为输出应该是: XY&Z xyz@example.com

我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-11 00:10:19

请看一下源代码。一般来说,分析器的可读性很好。您只需查看CreateComponents方法,即可查看它所使用的标记器和过滤器:

代码语言:javascript
复制
@Override
protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
    final Tokenizer source = new StandardTokenizer(matchVersion, reader);
    TokenStream result = new StandardFilter(matchVersion, source);
    // prior to this we get the classic behavior, standardfilter does it for us.
    if (matchVersion.onOrAfter(Version.LUCENE_31))
      result = new EnglishPossessiveFilter(matchVersion, result);
    result = new LowerCaseFilter(matchVersion, result);
    result = new StopFilter(matchVersion, result, stopwords);
    if(!stemExclusionSet.isEmpty())
      result = new KeywordMarkerFilter(result, stemExclusionSet);
    result = new PorterStemFilter(result);
    return new TokenStreamComponents(source, result);
 }

然而,StandardAnalyzer只是一个StandardTokenizerStandardFilterLowercaseFilterStopFilterEnglishAnalyzerEnglishPossesiveFilterKeywordMarkerFilterPorterStemFilter中滚动。

主要是,EnglishAnalyzer引入了一些英语词干增强,这对于纯英语文本应该很有效。

对于StandardAnalyzer,我所知道的唯一将其直接与英语分析联系在一起的假设是默认的停用词集,当然,这只是一个默认值,并且可以更改。StandardAnalyzer现在实现了Unicode Standard Annex #29,它试图提供非特定语言的文本分割。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17011854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档