2011-01-10 4 views
3

Ich habe versucht zu analysieren & index verschiedene Teile einer HTML-Seite mit Lucene & Tika. Für z. Ich möchte Text innerhalb Titel, H1, H2, A-Tags einer HTML-Seite separat indizieren und jedem von ihnen einen anderen Boost geben. Ich verwende Tika zum HTML-Parsen und zum Erstellen eines Document-Objekts mit den entsprechenden Feldern, die indiziert werden müssen. Allerdings konnte ich in Tika nichts finden, was mir helfen würde, die Tags, die ich möchte, direkt aus der Box zu indexieren.Wie können verschiedene Teile einer HTML-Seite mit Tika & Lucene analysiert und indexiert werden?

Mein Code sieht in etwa wie folgt aus:

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)); 
} 

in der Tika Stepping HTML Parsing-Code fand ich, dass es org.apache.tika.parser.html.HtmlHandler Klasse, die Metadatenobjekt füllt.

Muss ich einen benutzerdefinierten HTML-Handler wie HtmlHandler schreiben? Gibt es eine Klasse in Tika, die Text in verschiedenen HTML-Tags analysieren kann, die man spezifiziert? Kann jemand bitte Codebeispiele für von Ihnen vorgeschlagene Lösungen bereitstellen?

Antwort

0

Um. Verwenden Sie eine Suchmaschine für das Projekt aus einem bestimmten Grund? Ich benutzte eins, um nach einer Antwort zu suchen, stell dir das vor ;-)

A good and relevant tutorial

Verwandte Themen