我有一个基于Lucene的程序来索引源代码文件,我注意到Lucene的StandardTokenizer
不会拆分包含点的单词,例如foo.bar
。这样做的问题是,在源代码中,点通常用于方法调用,在这种情况下,对象名称和方法名称应该分开。
所以,我的问题是,我如何编写一般与源代码(例如没有特定的编程语言)一致的自定义Tokenizer
?有没有现有的实施?
答案 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插入其中)。