`
pengchua
  • 浏览: 152688 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

最近学习Lucene,在别人基础上,做了一个小例子

阅读更多
最近学习Lucene,在别人基础上,做了一个小例子 ,以便共同学习!

import java.io.InputStream;

import lia.handlingtypes.framework.DocumentHandlerException;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.textmining.text.extraction.WordExtractor;

public class DocDocumentHandler implements DocumentHandler ...{

    
public Document getDocument(InputStream is) throws Exception ...{
        
// TODO Auto-generated method stub
         String bodyText = null;

          
try ...{
              bodyText 
= new WordExtractor().extractText(is);
          }

          
catch (Exception e) ...{
            
throw new DocumentHandlerException(
              
"Cannot extract text from a Word document", e);
          }


          
if ((bodyText != null&& (bodyText.trim().length() > 0)) ...{
            Document doc 
= new Document();
            doc.add(Field.UnStored(
"body", bodyText));
            
return doc;
          }

          
return null;
    }


}


import java.io.InputStream;

import org.apache.lucene.document.Document;


public interface DocumentHandler ...{
      Document getDocument(InputStream is)
        
throws Exception;
      
}

import java.io.InputStream;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.w3c.tidy.Tidy;

public class HtmlDocumentHandler implements DocumentHandler ...{

    
public Document getDocument(InputStream is) throws Exception ...{
        
// TODO Auto-generated method stub
        Tidy tidy = new Tidy();
        tidy.setQuiet(
true);
        tidy.setShowWarnings(
false);
        org.w3c.dom.Document root 
= tidy.parseDOM(is, null);
        Element rawDoc 
= root.getDocumentElement();
        Document doc 
= new Document();
        String title 
= getTitle(rawDoc);
        String body 
= getBody(rawDoc);
        
if ((title != null&& (!title.equals(""))) ...{
            doc.add(Field.Text(
"title", title));
        }

        
if ((body != null&& (!body.equals(""))) ...{
            doc.add(Field.Text(
"body", body));
        }


        
return doc;
    }

    
private  String getTitle(Element rawDoc) ...{
        
if (rawDoc == null...{
            
return null;
        }


        String title 
= "";

        NodeList children 
= rawDoc.getElementsByTagName("title");
        
if (children.getLength() > 0...{
            Element titleElement 
= ((Element) children.item(0));
            Text text 
= (Text) titleElement.getFirstChild();
            
if (text != null...{
                title 
= text.getData();
            }

        }

        
return title;
    }


    
/** *//**
     * Gets the body text of the HTML document.
     *
     * @rawDoc the DOM Element to extract body Node from
     * 
@return the body text
     
*/

    
private  String getBody(Element rawDoc) ...{
        
if (rawDoc == null...{
            
return null;
        }


        String body 
= "";
        NodeList children 
= rawDoc.getElementsByTagName("body");
        
if (children.getLength() > 0...{
            body 
= getText(children.item(0));
        }

        
return body;
    }


    
/** *//**
     * Extracts text from the DOM node.
     *
     * 
@param node a DOM node
     * 
@return the text value of the node
     
*/

    
private  String getText(Node node) ...{
        NodeList children 
= node.getChildNodes();
        StringBuffer sb 
= new StringBuffer();
        
for (int i = 0; i < children.getLength(); i++...{
            Node child 
= children.item(i);
            
switch (child.getNodeType()) ...{
            
case Node.ELEMENT_NODE:
                sb.append(getText(child));
                sb.append(
" ");
                
break;
            
case Node.TEXT_NODE:
                sb.append(((Text) child).getData());
                
break;
            }

        }

        
return sb.toString();
    }

}


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import lia.handlingtypes.framework.DocumentHandlerException;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.pdfbox.cos.COSDocument;
import org.pdfbox.encryption.DecryptDocument;
import org.pdfbox.exceptions.CryptographyException;
import org.pdfbox.exceptions.InvalidPasswordException;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.pdmodel.PDDocumentInformation;
import org.pdfbox.searchengine.lucene.LucenePDFDocument;
import org.pdfbox.util.PDFTextStripper;

public class PdfDocumentHandler implements DocumentHandler ...{

  &nbs
分享到:
评论

相关推荐

    lucene入门小例子

    这个“lucene入门小例子”很可能是为了帮助初学者理解并掌握Lucene的基本用法而设计的一系列示例代码。 Lucene的核心概念包括索引、文档、字段和查询。首先,你需要理解索引的概念,它类似于传统数据库中的索引,但...

    lucene检索小例子

    总之,"lucene检索小例子"是一个实用的教程,通过它你可以学习到如何利用Lucene这一强大的全文搜索引擎库,实现高效、精准的文本检索功能。无论是在网站、数据库还是其他任何需要搜索功能的应用中,Lucene都是一个...

    一个基于LUCENE搜索引擎项目例子

    这个例子中的`cctvSearch`可能是一个包含项目源代码或配置文件的目录,可能包括了Lucene的Java库和其他必要的依赖库。确保正确地导入这些库,才能在项目中使用Lucene的功能。 接下来,我们需要创建一个`Analyzer`来...

    lucene例子(一个完整的,lucene例子)(lucenetest.rar,lucene,全文检索,lucene例子)

    lucenetest.rar,lucene,全文检索,lucene例子 lucenetest.rar,lucene,全文检索,lucene例子lucenetest.rar,lucene,全文检索,lucene例子

    lucene的一个实用例子

    **Lucene 知识点详解** Lucene 是一个开源全文搜索引擎...这个例子是一个很好的起点,可以帮助你掌握 Lucene 的核心概念,并将其应用于实际项目中。记得持续关注分享者提供的其他资源,以获取更多学习资料和实践技巧。

    lucene与quartz例子

    lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子

    lucene开发部分例子

    这个压缩包文件“lucene开发部分例子”包含了关于Lucene开发的一些实例,涵盖了从基础到进阶的多个方面,对于学习和理解Lucene的使用非常有帮助。 首先,"Web搜索引擎开发实例"这部分内容将教你如何使用Lucene来...

    lucene3 例子

    博文链接中提到的是一个关于Lucene3的博客文章,可能详细介绍了如何在实际项目中使用Lucene进行全文检索。博主"chinaxxren"在ITEYE上分享了这篇博客,虽然具体内容未在描述中给出,但我们可以推测博主可能讲解了以下...

    lucene全文搜索ajax例子

    总的来说,这个例子是一个综合性的Web应用,它展示了如何利用Lucene进行全文搜索,结合Ajax技术实现动态更新的搜索结果展示,同时还包括了高亮显示和多次搜索的功能。这对于学习和理解Lucene在实际应用中的工作原理...

    LUCENE的搜索引擎例子

    通过学习和理解这些代码,开发者可以更好地掌握如何在自己的B/S应用中实现一个功能完善的搜索引擎。 总的来说,使用Lucene构建的B/S架构下的搜索引擎,能够提供高效的全文搜索功能,满足用户对海量数据的快速查找...

    lucene3小例子

    《Lucene3小例子》 Lucene是一款强大的全文搜索引擎库,由Apache软件基金会开发,它提供...这个“lucene3小例子”是一个很好的起点,帮助开发者深入理解Lucene的工作原理和使用方式,为进一步的开发工作打下坚实基础。

    Lucene4.7-Web 例子

    1. 定义索引文档:在Lucene中,每个需要被搜索的对象都被表示为一个Document对象,包含多个Field,每个Field代表对象的一个属性。 2. 分析器选择:根据文本内容选择合适的Analyzer,例如中文文本可以使用...

    Lucene学习例子与文档

    **Lucene学习例子与文档详解** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,它提供了完整的搜索功能,包括索引、查询、排序等。Lucene被广泛应用于各种需要全文检索的项目中,如网站、文档管理、...

    lucene学习lucene学习

    在这个例子中,`fileDir` 指定包含待索引文本文件的目录,`indexDir` 是存储 Lucene 索引文件的位置。`StandardAnalyzer` 是 Lucene 提供的一个标准分词器,用于处理英文文本。`IndexWriter` 是负责创建和更新索引的...

    Lucene+compass+spring+jdbc+庖丁的一个例子

    标题中的“Lucene+compass+spring+jdbc+庖丁的一个例子”揭示了这是一个关于整合多个技术来构建一个搜索系统的示例。在这个系统中,我们有以下几个关键组件: 1. **Lucene**: Apache Lucene 是一个高性能、全文本...

    lucene3.6 搜索例子

    Apache Lucene 是一个开源全文搜索引擎库,为开发者提供了在Java应用程序中实现高效、可扩展的搜索功能的工具。在本篇文章中,我们将深入探讨Lucene 3.6版本中的搜索功能,通过实例解析其核心概念和操作流程。 一、...

    第一个lucene程序

    在这个例子中,我们创建了一个简单的内存索引,添加了一篇文档,并进行了关键词“测试”的搜索。这只是一个基础的Lucene应用,实际项目中可能涉及更复杂的查询构造、多字段索引、分页搜索、高亮显示结果等。 总的来...

    Lucene的的学习资料及案例

    在提供的案例中,你可以找到一个简单的Lucene应用实例。这个案例可能包含了以下部分: 1. **索引创建**: 包含读取数据源(如文件或数据库),创建Analyzer,将数据转换为Lucene的Document对象,并通过IndexWriter...

    lucene学习资料收集

    这个资料集可能包含了关于如何理解和使用Lucene的各种资源,特别是通过博主huanglz19871030在iteye上的博客文章链接,可以深入学习Lucene的核心概念和技术细节。 【标签】:“源码”和“工具”这两个标签暗示了这个...

Global site tag (gtag.js) - Google Analytics