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