Как анализировать и индексировать различные части HTML-страницы, используя Tika & Lucene? - PullRequest
3 голосов
/ 10 января 2011

Я пытался анализировать и индексировать различные части HTML-страницы, используя Lucene & Tika. Например, Я хотел бы индексировать текст внутри тегов Title, H1, H2, A на HTML-странице отдельно и обеспечивать различный импульс для каждого из них. Я использую Tika для анализа HTML и создаю объект Document с соответствующими полями, которые необходимо проиндексировать. Однако в Tika я не смог найти ничего, что помогло бы мне индексировать нужные теги прямо из коробки.

Мой код выглядит примерно так:

 InputStream is = new FileInputStream(f); 
 Parser parser = new AutoDetectParser(); 
 ContentHandler handler = new BodyContentHandler(-1);
 ParseContext context = new ParseContext(); 
  context.set(HtmlMapper.class, DefaultHtmlMapper.INSTANCE); 

 try {
  parser.parse(is, handler, metadata, context);
 } finally {
  is.close();
 }

 Document doc = new Document();
 doc.add(new Field("contents", handler.toString(),
   Field.Store.NO, Field.Index.ANALYZED));

 for (String name : metadata.names()) {
  String value = metadata.get(name);

  if (textualMetadataFields.contains(name)) {
   doc.add(new Field("contents", value,
     Field.Store.NO, Field.Index.ANALYZED));
  }

  doc.add(new Field(name, value, Field.Store.YES, Field.Index.YES));
 }

Заходя в код разбора HTML Тики, я обнаружил, что это класс org.apache.tika.parser.html.HtmlHandler, который заполняет объект метаданных.

Мне нужно написать собственный обработчик HTML, такой как HtmlHandler? Есть ли в Tika какой-то класс, который может анализировать текст в разных HTML-тегах, которые вы указываете? Может ли кто-нибудь предоставить примеры кода для предлагаемых вами решений?

1 Ответ

0 голосов
/ 15 января 2011

Um. Вы используете поисковую систему для проекта по какой-либо конкретной причине? Я использовал один для поиска ответа, представьте, что ;-)

Хороший и актуальный учебник

...