2011-01-10 63 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標籤中的文本? 有人可以提供您提出的解決方案的代碼示例嗎?

回答