2011-01-10 2 views
3

저는 Lucene & Tika를 사용하여 & HTML 페이지의 다른 부분을 색인화하려고했습니다. 예를 들면. 제목, H1, H2, HTML 페이지의 태그 내에서 텍스트를 개별적으로 인덱싱하고 각각에 다른 부스트를 제공하고 싶습니다. Tika를 HTML 구문 분석에 사용하고 색인을 생성해야하는 적절한 필드가있는 Document 객체를 만듭니다. 그러나 내가 상자에서 바로 원하는 태그를 색인하는 데 도움이 될 Tika 내에서 아무것도 찾을 수 없습니다. 나는 그것이 메타 데이터 개체를 채우는 org.apache.tika.parser.html.HtmlHandler 클래스는 것을 발견 티카의 HTML 구문 분석 코드에 스테핑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)); 
} 

:

내 코드는 다음과 같이 보입니다.

HtmlHandler와 같은 사용자 지정 HTML 처리기를 작성해야합니까? Tika에 다른 HTML 태그 내에서 텍스트를 구문 분석 할 수있는 클래스가 있습니까? 누군가가 제안한 솔루션에 대한 코드 샘플을 제공해 주시겠습니까?

답변