【问题标题】:Removing stop words while indexing files using Apache Lucene使用 Apache Lucene 索引文件时删除停用词
【发布时间】:2018-12-08 03:53:07
【问题描述】:

我正在从事一个涉及使用 Apache Lucene 索引文件的项目。虽然我能够成功地使用 Lucene 对文件进行索引,但是当我看到结果时,我得到了很多突然的词,可能是因为我在索引时没有删除停用词。

我在网上看到 Lucene 提供了一种在索引文件时删除停用词的方法。我该怎么做?

【问题讨论】:

  • 我的回答描述了停用词的工作原理,希望对您有所帮助,但根据您对问题的描述,我并不完全相信停用词是您的问题。我不知道你说“看到结果”指的是什么结果,我也不知道什么是“突兀的话”。如果停用词不是问题,对您看到的问题进行更详细的描述(最好是示例)可能有助于解决问题。

标签: java lucene information-retrieval


【解决方案1】:

Lucene 的StandardAnalyzer 包含一个 StopFilter,它可以从通过它的任何内容中删除一些典型的停用词。英语停用词的标准列表很短;主要是一些冠词、代词和介词。

如果您希望定义自己的停用词集,StandardAnalyzer 有几个构造函数允许您传入自己的停用词集,尤其是this one。只需创建一个包含所需停用词的 CharArraySet,然后将其传递给该构造函数并继续执行。

我相信大多数其他典型分析器也有一个接受相同参数的构造函数(乍一看,analyzers-common 中的几乎所有语言分析器都遵循这种模式)

当然,请务必使用use the same analyzer 进行索引和搜索。

【讨论】:

    【解决方案2】:

    如果您将使用标准分析器或停止分析器,则“on, a, an, the”之类的停止词将自动从索引中删除,并且您无法使用停止词执行搜索。如果您想使用“was, is, on”等停用词进行搜索,则必须使用空格分析器或简单分析器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      相关资源
      最近更新 更多