Токенизация хэштегов в Lucene.Net - PullRequest
2 голосов
/ 14 апреля 2011

Я использую Lucene.Net (версия 2.9). Я хотел бы сохранить пост в Твиттере «@name» или «#Note».

Использование инструмента Lucene AnalyzerViewer (http://www.codeproject.com/KB/cs/lucene_analysis.aspx?msg=3326095#xx3326095xx) для просмотра токенов, созданных другим анализатором.

Например, токены, производимые ниже из этого текста: «# Примечание: упражнение, чтобы жить дольше».

  • Анализатор пробелов: [# Примечание:] [Упражнение, [до] [вживую] [дольше.]
  • Стандартный анализатор: [примечание] [упражнение] [живой] [дольше]
  • Простой анализатор: [примечание] [упражнения] [до] [вживую] [дольше]

«Whitespace Analyzer» сохраняет хеш-теги. Я создал собственный анализатор, который использует WhitespaceTokenizer и нижний регистр.

Код пользовательского анализатора ...

public class CustomAnalyzer : Analyzer
{
    public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
    {
        TokenStream result = new Lucene.Net.Analysis.WhitespaceTokenizer(reader);

        // Makes sure everything is lower case
        result = new LowerCaseFilter(result);

        //Return the built token stream.)
        return result;
    }
}

Однако пользовательский анализатор оставляет знаки препинания. Токены, созданные пользовательским анализатором: [#note:] [упражнения,] [в] [вживую] [длиннее.]

Есть предложения по использованию фильтра, в котором сохраняются теги '#', '@' и удаляются знаки препинания?

Заранее спасибо.

1 Ответ

0 голосов
/ 14 апреля 2011

В java-версии lucene есть PatternAnalyzer, который позволяет указать шаблон, который будет использоваться для разделения токенов.

Документация: http://lucene.apache.org/java/2_9_4/api/contrib-memory/org/apache/lucene/index/memory/PatternAnalyzer.html

Вы можете следить за .net-версией этого анализатора или портировать его самостоятельно.

...