2011-01-10 61 views
3

我一直在尝试使用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标签中的文本? 有人可以提供您提出的解决方案的代码示例吗?

回答