请帮助我如何使用Lucene的词干分析器并停止删除阿拉伯语的单词?
另外,我想知道两者:
使用我自己的停用词列表。
使用Lucene列表。
提前谢谢。
更新
我写了这段代码:
DocumentReader documentReader = new DocumentReader(filePath);
ArrayList<String> stopWordsList = new ArrayList(Arrays.asList(documentReader.readFile().split("\\s+")));
CharArraySet stopwords = new CharArraySet(Version.LUCENE_47, stopWordsList, true);
ArabicAnalyzer arabicAnalyzer = new ArabicAnalyzer(Version.LUCENE_47, stopwords);
TokenStream tokenStream = arabicAnalyzer.tokenStream("?", TextProcessor.text);
tokenStream = new StopFilter(Version.LUCENE_47, tokenStream, stopwords);
TextProcessor.text = tokenStream.reflectAsString(true);
我导入了以下内容:
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.ar.ArabicAnalyzer;
import org.apache.lucene.util.Version;
import org.apache.lucene.analysis.core.StopFilter;
import org.apache.lucene.analysis.util.CharArraySet;
import org.apache.lucene.analysis.ar.ArabicStemmer;
我用过这些罐子:
ArabicAnalyzer.jar
lucene-analyzers-common-4.7.0.jar
lucene-core-4.7.0.jar
但我无法测试输出,因为我没有收到字符串? 那么如何删除停用词之后的文本呢?
注意,我应该放在第一个参数中 arabicAnalyzer.tokenStream(“?”,TextProcessor.text);
感谢您的帮助。
答案 0 :(得分:0)
Arabic stemmer位于lucene-analyzers-common
个包中。如果您使用的是maven,只需添加relevant dependency。
要使用自定义禁用词列表,只需使用StandardAnalyzer
(具有stopWords
参数)的相关构造函数,或使用不带停用词参数的构造函数用于Lucene默认集。如果您使用的是其他分析仪,则需要告诉我们哪些建议。