【发布时间】:2011-06-06 12:36:57
【问题描述】:
我一直在尝试使用 Lucene 和 Tika 解析和索引 HTML 页面的不同部分。例如。我想分别索引 HTML 页面的 Title、H1、H2、A 标签中的文本,并为每个标签提供不同的提升。我正在使用 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));
}
进入 Tika 的 HTML 解析代码,我发现是 org.apache.tika.parser.html.HtmlHandler 类填充了元数据对象。
我是否需要编写像 HtmlHandler 这样的自定义 HTML 处理程序? Tika 中是否有一些类可以解析出指定的不同 HTML 标记中的文本? 有人可以为您提出的解决方案提供代码示例吗?
【问题讨论】:
标签: search full-text-search html-parsing lucene