【问题标题】:Lucene tokenizer for generic source code用于通用源代码的 Lucene 标记器
【发布时间】:2012-08-03 19:02:43
【问题描述】:

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

所以,我的问题是,我该如何编写一个自定义的Tokenizer,它通常适用于源代码(例如,没有特定的编程语言)?有没有现成的实现?

【问题讨论】:

    标签: lucene tokenize


    【解决方案1】:

    您可以查看this article on onjava.com 关于使用 Lucene 索引源代码的信息,它已有多年历史,但可以作为指导。关于标记器,他们使用 LowerCaseTokenizer 似乎可以满足您的要求。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        相关资源
        最近更新 更多