2013-05-08 2 views
1

Я новичок в pylucene, и я пытаюсь создать собственный анализатор, который токенизирует текст только на основе подчеркивания, т. Е. Он должен сохранять пробелы. Пример: «Hi_this is_awesome» должен быть обозначен в [«привет», «это», «удивительный»] токены.Пользовательский токенизатор для пилюкена, который символизирует текст, основанный только на символах подчеркивания (сохраняет пробелы)

Из различных примеров кода я понял, что мне нужно переопределить метод incrementToken для CustomTokenizer и написать CustomAnalyzer, для которого TokenStream должен использовать CustomTokenizer, за которым следует LowerCaseFilter, чтобы добиться того же.

У меня возникли проблемы с внедрением метода incrementToken и подключения точек (как может использоваться токенизатор, как обычно, анализы зависят от TokenFilter, которые зависят от TokenStreams), поскольку на пилюкене имеется очень мало документации.

+0

Было бы полезно, чтобы увидеть, что у вас так далеко. – femtoRgon

ответ

3

Понял работает в конечном счете, путь создания нового tokenzier, который считается каждый обугливается, кроме подчеркивания как часть маркеров, генерируемых (в основном подчеркивает становится разделитель)

 
class UnderscoreSeparatorTokenizer(PythonCharTokenizer): 
    def __init__(self, input): 
    PythonCharTokenizer.__init__(self, input) 

    def isTokenChar(self, c): 
    return c != "_" 

class UnderscoreSeparatorAnalyzer(PythonAnalyzer): 
    def __init__(self, version): 
    PythonAnalyzer.__init__(self, version) 

    def tokenStream(self, fieldName, reader): 
    tokenizer = UnderscoreSeparatorTokenizer(reader) 
    tokenStream = LowerCaseFilter(tokenizer) 
    return tokenStream 
Смежные вопросы