написать пользовательский anaylzer в pylucene / inheritance с помощью jcc?

Я хочу написать собственный анализатор в пилюне. Обычно в java lucene, когда вы пишете класс анализатора, ваш класс наследует класс анализатора lucene.

но pylucene использует jcc, java для компилятора c ++ / python.

Итак, как вы можете наследовать класс python из класса java с помощью jcc, и особенно, как вы пишете собственный анализатор пилюценов?

Благодарю.

Вот пример анализатора, который обертывает фильтр EdgeNGram.

import lucene class EdgeNGramAnalyzer(lucene.PythonAnalyzer): ''' This is an example of a custom Analyzer (in this case an edge-n-gram analyzer) EdgeNGram Analyzers are good for type-ahead ''' def __init__(self, side, minlength, maxlength): ''' Args: side[enum] Can be one of lucene.EdgeNGramTokenFilter.Side.FRONT or lucene.EdgeNGramTokenFilter.Side.BACK minlength[int] maxlength[int] ''' lucene.PythonAnalyzer.__init__(self) self.side = side self.minlength = minlength self.maxlength = maxlength def tokenStream(self, fieldName, reader): result = lucene.LowerCaseTokenizer(Version.LUCENE_CURRENT, reader) result = lucene.StandardFilter(result) result = lucene.StopFilter(True, result, StopAnalyzer.ENGLISH_STOP_WORDS_SET) result = lucene.ASCIIFoldingFilter(result) result = lucene.EdgeNGramTokenFilter(result, self.side, self.minlength, self.maxlength) return result 

Вы можете наследовать от любого класса в пилюне, но те, у которых есть имена, начинающиеся с Python , также расширят базовый класс Java , т. Е. Делают соответствующие методы «виртуальными» при вызове из java-кода. Поэтому в случае пользовательских анализаторов наследуйте от PythonAnalyzer и реализуйте метод tokenStream .

Interesting Posts