Lucene: адаптировать StandardTokenizer к данным Twitter - PullRequest
1 голос
/ 11 декабря 2011

Мне нужно адаптировать StandardTokenizer от lucene к некоторым специальным целям, связанным с данными в твиттере.В настоящее время я использую StandardTokenizer для токенизации некоторых твитов, над которыми я хочу работать.Это работало довольно хорошо, но теперь я хочу расширить поведение (например, рассмотреть также #hashtags и @somebody, рассмотреть смайлики :), удалить URL, ...).

Может кто-нибудь сказать мне - или даже дать мне направление - как я могу сделать это легко?Я знаю, что написание собственного Tokenizer было бы лучшим выбором, но я совсем новичок в lucene и не знаю, с чего начать ...

Надеюсь, кто-нибудь может мне помочь:)

Бест, Майкл

1 Ответ

2 голосов
/ 12 декабря 2011

Вы можете значительно расширить токенизацию StandardTokenizer, используя API Lufne CharFilter (и, возможно, TokenFilters, в зависимости от того, как вы хотите, чтобы поиск работал).

В конечном счете, если StandardTokenizer полностью отличается от того, чтоесли вы хотите, то это неправильный токенизатор, но если его закрыть, это может быть намного проще.

CharFilter - это, по сути, FilterReader, который позволяет вам изменять текст перед запуском Tokenizer.Он также отслеживает корректировки смещения, так что выделение будет по-прежнему работать!

для добавления CharFilters, самый простой способ - расширить ReusableAnalyzerBase и переопределить его метод initReader, обернув входящий считыватель требуемыми CharFilters.

Возможно, вы захотите взглянуть на MappingCharFilter как на начало, оно позволяет заранее определить некоторые сопоставления для обработки вашего специального синтаксиса Twitter.Вот несколько примеров / идей: http://markmail.org/message/abo2hysvfy2clxed

...