如何使用Tika&Lucene解析和索引HTML页面的不同部分?
问题描述:
我一直在尝试使用Lucene & Tika解析&索引HTML页面的不同部分。例如。我想分别在HTML页面的Title,H1,H2,A标签中索引文本,并为它们中的每一个提供不同的提升。我使用Tika进行HTML解析,并使用需要建立索引的相应字段创建一个Document对象。然而,我在Tika里找不到任何东西,这可以帮我索引我想要的标签。如何使用Tika&Lucene解析和索引HTML页面的不同部分?
我的代码看起来是这样的:
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标签中的文本? 有人可以提供您提出的解决方案的代码示例吗?