我試圖從JRuby擴展Lucene的Analyzer
並從java中使用它。一個簡單的分析看起來像:是否可以從JRuby創建Java類並在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
並將其打包作爲一個罐子。
現在,欲以MyAnalyzer
回到Java時,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)