gpt4 book ai didi

lucene - Lucene StandardAnalyzer 和 EnglishAnalyzer 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 11:34:03 28 4
gpt4 key购买 nike

我正在使用 Lucene 4.3 为英文推文编制索引,但是我不确定要使用哪个分析器。 Lucene StandardAnalyzer 和 EnglishAnalyzer 有什么区别?

我还尝试使用以下文本测试 StandardAnalyzer:“XY&Z Corporation - xyz@example.com”。输出是:[xy] [z] [corporation] [xyz] [example.com],但我认为输出将是:[XY&Z] [Corporation] [xyz@example.com]

难道我做错了什么?

最佳答案

看一下源码。通常,分析器的可读性很强。您只需要查看 CreateComponents查看正在使用的 Tokenizer 和过滤器的方法:

@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只是一个 StandardTokenizer , StandardFilter , LowercaseFilter , 和 StopFilter . EnglishAnalyzer卷入 EnglishPossesiveFilter , KeywordMarkerFilter , 和 PorterStemFilter .

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

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

关于lucene - Lucene StandardAnalyzer 和 EnglishAnalyzer 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17011854/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com