我正在从事一个涉及使用 Apache Lucene 索引文件的项目。虽然我能够成功地使用 Lucene 对文件进行索引,但是当我看到结果时,我得到了很多突然的单词,可能是因为我在索引时没有删除停用词。
我在网上读到 Lucene 提供了一种在索引文件时删除停用词的方法。我怎样才能做到这一点?
我正在从事一个涉及使用 Apache Lucene 索引文件的项目。虽然我能够成功地使用 Lucene 对文件进行索引,但是当我看到结果时,我得到了很多突然的单词,可能是因为我在索引时没有删除停用词。
我在网上读到 Lucene 提供了一种在索引文件时删除停用词的方法。我怎样才能做到这一点?
Lucene 的StandardAnalyzer包含一个 StopFilter,它可以从通过它的任何内容中删除一些典型的停用词。英语停用词的标准列表很短;主要是一些冠词、代词和介词。
如果您希望定义自己的停用词集,StandardAnalyzer 有几个构造函数允许您传入自己的停用词集,尤其是这个。只需创建一个包含所需停用词的CharArraySet ,然后将其传递给该构造函数,然后就可以了。
我相信大多数其他典型的分析器也有一个接受相同参数的构造函数(乍一看,几乎所有分析器中的语言分析器都遵循这种模式)
当然,一定要为索引和搜索使用相同的分析器。
如果您将使用标准分析器或停止分析器,则“on, a, an, the”之类的停止词将自动从索引中删除,并且您无法使用停止词执行搜索。如果您想使用“was, is, on”之类的停用词进行搜索,则必须使用空格分析器或简单分析器。