在Lucene 4.7中为阿拉伯语删除并停止删除单词

时间:2014-04-30 07:34:03

标签: lucene stop-words stemming

请帮助我如何使用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);

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Arabic stemmer位于lucene-analyzers-common个包中。如果您使用的是maven,只需添加relevant dependency

要使用自定义禁用词列表,只需使用StandardAnalyzer(具有stopWords参数)的相关构造函数,或使用不带停用词参数的构造函数用于Lucene默认集。如果您使用的是其他分析仪,则需要告诉我们哪些建议。