1

我有一个基于 Lucene 的程序来索引源代码文件,我注意到 LuceneStandardTokenizer不会拆分包含点的单词,例如foo.bar. 这样做的问题是,在源代码中,点通常用于方法调用,在这种情况下,对象名和方法名应该分开。

所以,我的问题是,我该如何编写一个Tokenizer与源代码(例如,没有特定的编程语言)一起工作的自定义?有没有现有的实现?

4

2 回答 2

4

您可以在 onjava.com 上查看这篇关于使用 Lucene 索引源代码的文章,该文章已有数年历史,但可以作为指导。关于标记器,他们使用似乎可以做你想做的事情的 LowerCaseTokenizer。

于 2012-08-03T19:49:58.500 回答
2

您可以将 StandardTokenizer 的语法 (JFlex) 更改为按点拆分,并生成您的自定义 Tokenizer。这就是我在使用 JFlex/Java CC 为新的 TokenStream API 生成自定义 Tokenizer时所做的。

或者

您也可以拥有一个按点拆分的 TokenFilter,并使用 StandardTokenizer 和这个新的 TokenFilter 创建一个自定义分析器。(看看 StandardAnalyzer 做了什么,然后在其中插入这个新的 TokenFilter)。

于 2012-08-04T01:37:14.200 回答