如何从Lucene Indexing中排除数字?

时间:2015-10-08 18:08:24

标签: java lucene

我正在使用Lucene 5.3.1(最新版本)开发信息检索应用程序,我设法从文本文件索引术语,然后在其中搜索。文本文件恰好包含章节编号,如2.13.4.2等等。

问题在于我不需要索引这些数字,因为我不需要搜索它们,而且我无法找到如何从标记化中排除某些术语,我知道{{{ 1}}使用StopWords集来排除几个术语,但据我所知,它对数字没有任何作用。

1 个答案:

答案 0 :(得分:0)

我可以提出的最简单的答案 - 在编制索引之前从文本中删除数字。您可以使用正则表达式。此解决方案有一个副作用 - PositionIncrementAttribute将在没有这些数字的情况下计算,因为它们不会出现在文本中。这可能会打破你的一些PhraseQuery ies。

另一个选项,如前所述 - 编写自定义TokenFilter来删除数字。但你应该记住:

  • 调整Analyzer以不在点上爆炸术语。否则2.1将是两个而不是一个。这再次导致PhraseQuery;
  • 出现问题
  • PositionIncrementAttribute删除字词时正确更改TokenStream的值(递增)。