我正在使用Lucene 5.3.1(最新版本)开发信息检索应用程序,我设法从文本文件索引术语,然后在其中搜索。文本文件恰好包含章节编号,如2.1
,3.4.2
等等。
问题在于我不需要索引这些数字,因为我不需要搜索它们,而且我无法找到如何从标记化中排除某些术语,我知道{{{ 1}}使用StopWords集来排除几个术语,但据我所知,它对数字没有任何作用。
答案 0 :(得分:0)
我可以提出的最简单的答案 - 在编制索引之前从文本中删除数字。您可以使用正则表达式。此解决方案有一个副作用 - PositionIncrementAttribute
将在没有这些数字的情况下计算,因为它们不会出现在文本中。这可能会打破你的一些PhraseQuery
ies。
另一个选项,如前所述 - 编写自定义TokenFilter
来删除数字。但你应该记住:
Analyzer
以不在点上爆炸术语。否则2.1
将是两个而不是一个。这再次导致PhraseQuery
; PositionIncrementAttribute
删除字词时正确更改TokenStream
的值(递增)。