Связывание Solr HTMLStripCharFilter с помощью Lucene Analyzer - PullRequest
3 голосов
/ 31 января 2012

Я хочу проиндексировать HTML-текст с помощью FrenchAnalyzer, поэтому мне нужно удалить HTML-текст перед его анализом.

Я хочу выделить ключевые слова после поиска, чтобы решение, подобное этому , не работало, потому что я хочу сохранить информацию о положении символов.

Я нашел класс SolR HTMLStripCharFilter, который выглядит идеально, но я не могу связать его с FrenchAnalyzer.

Я пытался переписать FrenchAnalyzer, но я не знаю, как использовать HtmlStripCharFilter, и он не работает как стандартный фильтр Lucene.

Я использую Lucene 3.5.0 без Solr

Ответы [ 2 ]

3 голосов
/ 24 апреля 2012

В вашем подклассе Analyzer попробуйте переопределить initReader.Возможно, вы захотите добавить логический параметр stripHtml в конструктор вашего анализатора, а затем использовать это условие внутри initReader.

/**
 * Override this if you want to add a CharFilter chain.
 */
@Override
protected Reader initReader(Reader reader) {
    if (stripHtml) {
        return new HTMLStripCharFilter(CharReader.get(reader));
    } else {
        return reader;
    }
}
0 голосов
/ 01 февраля 2012

Как насчет того, чтобы попробовать что-то подобное:

<analyzer>
  <charFilter class="solr.HTMLStripCharFilterFactory"/>
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.ElisionFilterFactory"/>
  <filter class="solr.LowerCaseFilterFactory"/>
  <filter class="solr.SnowballPorterFilterFactory" language="French"/>
</analyzer>

Подробнее:

  1. HTMLStripCharFilterFactory
  2. SnowballPorterFilterFactory
  3. Анализ языка Solr - французский
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...