Удаление меню из html во время сканирования или индексации с помощью nutch и solr

Я просматриваю наш большой веб-сайт(ы) с помощью nutch, а затем индексирую с помощью solr, и результаты довольно хорошие. Однако на сайте есть несколько структур меню, которые индексируют и портят результаты запроса.

Каждое из этих меню четко определено в DIV, поэтому <div id="RHBOX"> ... </div> or <div id="calendar"> ...</div> и несколько других.

Мне нужно в какой-то момент удалить содержимое в этих DIVS.

Я предполагаю, что правильное место находится во время индексации solr, но не могу понять, как это сделать.

Шаблон будет выглядеть примерно как (<div id="calendar">).*?(<\/div>), но я не могу заставить его работать в <tokenizer class="solr.PatternTokenizerFactory" pattern="(<div id="calendar">).*?(<\/div>)" />, и я не совсем уверен, куда его поместить в schema.xml.

Когда я помещаю этот шаблон в schema.xml, он не анализируется.


person hayres    schedule 11.04.2011    source источник


Ответы (4)


Вот патч для SOLR, который вы можете поместить в свою конфигурацию индексирования, чтобы игнорировать содержимое тегов, которые вы настраиваете. Однако он будет работать только с XML, поэтому, если вы можете привести в порядок свой HTML или знаете, что это XHTML, тогда это будет работать, но не будет работать с любым случайным HTML.

person Mike Sokolov    schedule 26.09.2011

Я думаю, у вас есть несколько вариантов:

  1. расширить анализатор HTML Nutch и добавить логику для удаления заголовка. (Возможно, для этого есть лучшие места, например, когда у вас есть необработанные данные, но до анализа DOM)
  2. сделайте свой сайт достаточно умным, чтобы не отображать заголовок, когда nutch сканирует. Это довольно легко сделать, просто проверив значение User-Agent в заголовке запроса. Возможно, вам придется лучше выполнить сканирование, поскольку ссылок в заголовке не будет, чтобы помочь nutch найти другие страницы.
  3. Каким-то образом заставить Solr удалить заголовок для данных nutch. Я не знаю, как вы это сделаете, и я думаю, что это означает, что вы теряете часть синергии Nutch/Solr.
  4. Как-нибудь отредактируйте индекс Nutch (просто индекс lucene). Теоретически вы можете просто пройтись по всем документам в индексе и отсечь правильное свойство каждого документа.

Я думаю, что самый простой способ сделать это — сделать № 2, если у вас есть последовательный способ рисования заголовка (например, скин или общий включение). Тогда, возможно, № 1 и № 4. Я думаю, что № 3 будет самым сложным, но я могу ошибаться.

person mlathe    schedule 26.09.2011

В Nutch 1.12 была введена новая функция с использованием синтаксического анализатора apache tika, который работает по алгоритму бойлерпайпа, чтобы отделить содержимое верхнего и нижнего колонтитула от html-страниц на самом этапе синтаксического анализа.

Мы можем использовать следующие свойства в nutch-site.xml, чтобы реализовать это:

<!-- parse-tika plugin properties -->
<property>
  <name>tika.extractor</name>
  <value>boilerpipe</value>
  <description>
  Which text extraction algorithm to use. Valid values are: boilerpipe or none.
  </description>
</property>
<property>
  <name>tika.extractor.boilerpipe.algorithm</name>
  <value>DefaultExtractor</value>
  <description>
  Which Boilerpipe algorithm to use. Valid values are: DefaultExtractor, ArticleExtractor
  or CanolaExtractor.
  </description>
</property>

Это работает для меня. Надеюсь, это сработает и для других... :)

Подробный обзор вы можете найти в этом билете: https://issues.apache.org/jira/browse/NUTCH-961

person TechGuy    schedule 16.08.2016

Если вы хотите сделать это, я считаю, что вы должны написать собственный синтаксический анализатор в nutch, чтобы данные для индексации не содержали данные. В основном после разбора текстовые данные представляют собой необработанный текст без какой-либо структуры.

person millebii    schedule 11.04.2011
comment
Это неправильно. Solr анализирует необработанный HTML-код, который просканировал nutch. Nutch также разбирает его в свой собственный индекс. - person hayres; 12.04.2011
comment
Это не совсем так. Solr анализирует объекты Lucene Document, которые создает nutch. Часть данных — это необработанный HTML, но есть и другие свойства, такие как title и contentType, которые передаются Solr. Solr не анализирует его. - person mlathe; 26.09.2011