【发布时间】:2011-04-19 18:46:34
【问题描述】:
我正在尝试从 JRuby 扩展 Lucene 的 Analyzer 并从 java 中使用它。一个简单的分析器如下所示:
class MyAnalyzer < Java::OrgApacheLuceneAnalysis::Analyzer
def TokenStream (file_name, reader)
result = StandardTokenizer.new(Version::LUCENE_CURRENT, reader)
result = LowerCaseFilter.new(result)
result = LengthFilter.new(result, 3, 50)
result = StopFilter.new(result, StandardAnalyzer.STOP_WORDS_SET)
result = PorterStemFilter.new(result)
result
end
end
然后我编译它:jrubyc -c /home/camilo/trunk/utils/target/dependency/lucene-core-3.0.2.jar --javac MyAnalyzer.rb 并将其打包为 jar。
现在,当尝试在 java 中使用 MyAnalyzer 时,MyAnalyzer 是 org.jruby.RubyObject 的后代,而不是 org.apache.lucene.analysis.Analyzer 的后代。
有没有办法让 Java 将 MyAnalyzer 视为 Analyzer 而不是 RubyObject?还是这种方式超出了 JRuby 现在可以做的范围?
JRuby 版本:jruby 1.6.0 (ruby 1.8.7 patchlevel 330)
【问题讨论】: