如何使用Apache Lucene 5.3.1仅索引具有最小长度的单词?

时间:2015-12-07 15:02:16

标签: apache lucene nlp word minimum

有人可以给我一个关于如何使用Apache Lucene 5.3.1仅索引最小长度的单词的提示吗?

我已经通过API进行了搜索,但除了this之外没有找到任何符合我需求的内容,但我无法弄清楚如何使用它。

谢谢!

编辑: 我想这是重要的信息,所以这里是我对以下答案中我想要实现的解释的副本:

"我不打算使用查询。我想创建一个源代码汇总工具,我使用Lucene为其创建了一个doc-term矩阵。现在它还显示单字或双字的单词。我想排除它们,因此它们不会显示在结果中,因为它们对摘要几乎没有价值。我知道我可以在输出结果时过滤它们,但这不是一个干净的解决方案。更糟糕的是将单字符或双字符单词的所有组合添加到停止列表中。我希望有一种比这更好的方式。"

1 个答案:

答案 0 :(得分:2)

您应该使用具有LengthTokeFilter的自定义分析器。 E.g。

Analyzer ana = CustomAnalyzer.builder()
                .withTokenizer("standard")
                .addTokenFilter("standard")
                .addTokenFilter("lowercase")     
                .addTokenFilter("length", "min", "4", "max", "50")
                .addTokenFilter("stop", "ignoreCase", "false", "words", "stopwords.txt", "format", "wordset")
                .build();

但最好使用一个禁用词(几乎所有文档中都会出现的词,比如英语文章)。这样可以得到更准确的结果。