我正在 Java 应用程序中处理一些印尼语文本,我需要阻止它们。
目前我正在使用 lucene indonesian stemmer。org.apache.lucene.analysis.id.IndonesianAnalyzer;
但结果并不令人满意。
谁能建议我不同的词干分析器?
我正在 Java 应用程序中处理一些印尼语文本,我需要阻止它们。
目前我正在使用 lucene indonesian stemmer。org.apache.lucene.analysis.id.IndonesianAnalyzer;
但结果并不令人满意。
谁能建议我不同的词干分析器?
“enang”是一个词干。词干不必是实际的单词。例如,在英语中,“argue”、“argues”和“arguing”简化为词干“argu”。“argu”不是英文单词,但它是一个有意义的词干。这就是词干分析器的工作方式。只要您以相同的方式将词干分析器应用于索引数据和查询,它应该可以正常工作。
如果您不想要这样的行为,那么使用词干分析器根本没有任何意义。
除了词干分析器,IndianAnalyzer 相当容易复制。它的其他组件只涉及 a StandardTokenizer
、StandardFilter
、LowercaseAnalyzer
和 a StopFilter
。这只是一个StandardAnalyzer
带有印度尼西亚停用词集的设置,当您开始使用它时,您可以创建一个没有词干分析器的印度尼西亚分析器,如下所示:
//If you are using the default stopword location defined in the IndonesianAnalyzer you could load them like this.
CharArraySet defaultStopSet = StopwordAnalyzerBaseloadStopwordSet(false, IndonesianAnalyzer.class, IndonesianAnalyzer.DEFAULT_STOPWORD_FILE, "#");
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43, defaultStopSet);
我不确定您是否会在将默认停用词文件上的阅读器传递到 StandardAnalyzer 构造函数时遇到问题。