我有一个基于ApacheLucene5.5/ 6.0的模块,它可以检索关键字。除了一件事- Lucene不能过滤停用词,其他一切都正常。
我尝试用两种不同的方法启用停用词过滤。
方法1:
tokenStream = new StopFilter(new ASCIIFoldingFilter(new ClassicFilter(new LowerCaseFilter(stdToken))), EnglishAnalyzer.getDefaultStopSet());
tokenStream.reset();
方法2:
tokenStream = new StopFilter(new ClassicFilter(new LowerCaseFilter(stdToken)), StopAnalyzer.ENGLISH_STOP_WORDS_SET);
tokenStream.reset();
完整代码可从以下网址获得:
https://stackoverflow.com/a/36237769/462347
我的问题:
1.为什么Lucene不过滤停用词?
1.我如何在Lucene 5.5 / 6.0中启用停用词过滤?
2条答案
按热度按时间dauxcl2d1#
我刚刚测试了方法1和方法2,它们似乎都能很好地过滤掉停用词。下面是我的测试方法:
结果:
有些
填料
需要
分析,分析
它消除了我样本中的四个停用词。
2q5ifsrm2#
陷阱是在默认的Lucene的停用词列表,我预计,它是更广泛。
以下是默认情况下尝试加载自定义停用词表的代码,如果失败,则使用标准停用词表: