用于通用源代码的Lucene tokenizer

时间:2012-08-03 19:02:44

标签: lucene tokenize

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

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

2 个答案:

答案 0 :(得分:4)

你可以查看this article on onjava.com关于使用Lucene编制索引源代码的信息,已有几年历史了,但可以作为指南。关于tokenizer,他们使用看起来像你想要的LowerCaseTokenizer。

答案 1 :(得分:2)

您可以将StandardTokenizer的语法(JFlex)更改为分割点,并生成自定义Tokenizer。这就是我在Generating a custom Tokenizer for new TokenStream API using JFlex/ Java CC所做的。

OR

您还可以使用TokenFilter分割点,并使用StandardTokenizer和新的TokenFilter创建自定义分析器。 (参见StandardAnalyzer所做的事情,只需将新的TokenFilter插入其中)。