1、通过POI项目来索引。
public class POIWordDocHandler implements DocumentHandler{
public Document getDocument(InputStream is)throws DocumentHandlerException{
StringbodyText=null;
try{//提取文本字段,接收word文档的inputstream对象,允许把原文写入writer类,从wrtier类提取
WordDocument wd=new wordDocument(is);
StringWriterdocTextWriter=new StringWriter();
wd.writeAllText(bew PrintWriter(docTextWriter));
docTextWriter.close();
bodyText=docTextWriter.toString();
}
catch(Exception e){
throw new DocumentHandlerException("cannot extracttext from a word document",e);
}
if((bodyText!=null)&&(bodyText.trim().length()>0)){
Document doc=new Document();
doc.add(Field.UnStored("body",bodyText));
return doc;
}
returnnull;
}
public static void main() throwsException{
POIWordDocHandler handler=new POIWordDocHandler();
Documentdoc=handler.getDocument(new FileInputStream(newFile(args[0])));
System.out.println(doc);
}
}
2、使用TextMining.org包API,支持从WORD6/95
public class TextMiningWordDocHandler implementsDocumentHandler{
publicDocument getDocument throws DocumentHandlerException(){
String bodyText=null;
try{
bodyText=newWordExtractor().extractText(is);//从InputStream对象中提取文本
}
catch (Exception e){
throw new DocumentHandlerException("cannot extract text from a worddocument",e);
}
if((bodyText!=null)&&(bodyText.trim().length()>0)){
Document doc=new Document();
doc.add(Field.unStored("body",bodyText));
return doc;
}
return null;
}
publicstatic void main(String[] args) throws Exception{
TextMiningWordDocHandler handler=newTextMiningWordDocHandler();
Document doc=handler.getDocument(new FileInputStream(newFile(args[0])));
System.out.println(doc);
}
}
分享到:
相关推荐
1. **Lucene核心库**:`lucene-core-2.4.0.jar` 是Lucene的核心组件,提供了索引和查询的基本功能,如文档的添加、删除、更新,以及查询解析和执行。 2. **Analyzer组件**:`lucene-analyzers-2.4.0.jar` 包含了...
`lucene-core-2.4.1.jar`是Lucene的核心库,包含了Lucene的基础组件和API,如文档处理、索引操作、查询构造等,这些是MMAnalyzer进行分词工作所必需的。 在实际项目中,正确导入这两个JAR包是确保MMAnalyzer正常...
4. **文档处理**:能读取和索引多种格式的文件,如HTML、PDF、Word等,使得索引内容多样化。 5. **实时搜索**:Lucene的索引更新可以在短时间内完成,实现动态索引和实时搜索。 6. **内存和磁盘管理**:通过缓存...
iTextPDFExtractor.java ------ ----使用iText解析PDF 文档代码 PDFBoxHello.java ----------- --PDFBox测试代码 PDFBoxLuceneIndex.java ------ --PDFBox创建PDF文件的Lucene...-- POI处理Excel和Word文档代码
7. **更新和删除索引**:Lucene支持动态更新索引,当文档内容发生变化时,可以快速地反映到索引中;同样,也可以方便地从索引中删除文档。 8. **多线程支持**:在Windows环境下,Lucene可以利用多核处理器的优势,...
1. 文档索引:Lucene的核心工作是将非结构化的文本数据转换为结构化的索引。这一过程包括分词(Tokenization)、词干提取(Stemming)和停用词处理(Stop Word Filtering),以及创建倒排索引(Inverted Index)等...
1. **高效的索引**:Lucene支持实时索引,即在添加、删除或更新文档时无需重建整个索引。 2. **强大的搜索功能**:除了基本的关键词搜索,还支持布尔逻辑、短语匹配、模糊搜索、近似搜索等多种高级查询语法。 3. **...
- **索引(Index)**: Lucene 首先对文档内容进行分析和处理,生成倒排索引(Inverted Index),这是一种将单词映射到包含该单词的文档集合的数据结构,便于快速查找包含特定单词的文档。 - **分词器(Tokenizer)...
3. **文档(Document)**:在Lucene中,每个要索引的对象被表示为一个文档,包含多个字段(Field),比如Word文档的标题、内容、作者等。 4. **字段(Field)**:字段是文档的组成部分,每个字段有其特定的属性,...
5. **文档处理**:新版本可能增强了对不同文档格式的支持,如PDF、Word、HTML等,使得非文本数据的全文检索成为可能。 6. **API改进**:Lucene的API通常会随着版本迭代而变得更为友好和完善,8.9.0可能会提供更简洁...
当我们需要索引Word文档时,首先需要使用POI来读取文档内容。POI提供了HWPFOIDocument和XWPFDocument类,分别用于处理旧版的二进制Word格式(.doc)和较新的XML格式(.docx)。通过这些类,我们可以获取到文档中的...
2. **索引构建(Indexing)**:索引是Lucene的核心,它创建了一个倒排索引(Inverted Index),其中每个术语都关联到包含该术语的文档列表。索引过程中,可以设置不同的字段类型,如存储字段(Stored Field,用于...
Lucene的工作基于倒排索引(Inverted Index)原理,通过分析文本并创建索引,使得在海量数据中快速定位到包含特定关键词的文档变得可能。这个过程包括分词(Tokenization)、词干提取(Stemming)、停用词处理(Stop...
7. **倒排索引**:Lucene的核心是倒排索引,它允许快速定位含有特定术语的文档,极大提高了搜索效率。 ### 四、应用示例 例如,假设你正在构建一个博客平台,可以使用Lucene来实现全文检索功能。每个博客文章作为...
2. **灵活性**:Lucene 支持多种文件格式,如纯文本、HTML、PDF、Word 文档等,并能处理多种语言。 3. **可扩展性**:Lucene 提供了丰富的 API,允许开发者根据需求自定义索引和查询策略。 4. **跨平台**:由于是用 ...
而在Lucene中,基本单位是Document,它同样由多个字段组成,但Lucene索引的是这些字段的内容,以加速文本检索。 - **索引构建**:Lucene支持增量索引和批量索引,可以处理数据源的小幅变化或大规模数据。数据库通常...
6. **实时更新与增量索引**:Lucene支持实时更新和增量索引,这意味着新的文档可以在不重新构建整个索引的情况下被添加。这对于处理动态变化的数据源非常有用。 通过深入研究“lucene-demo”项目,开发者不仅可以...
Lucene 能够对非结构化数据进行索引和搜索,而非结构化数据是指不定长或无固定格式的数据,例如邮件、Word 文档等。全文检索的思路包括提取非结构化数据的信息、重新组织这些信息并变成一定的结构——索引,以提高...
- **文档格式处理**:Lucene支持多种文档格式的索引和搜索,包括PDF、Word等。 - **工具与扩展**:提供了丰富的工具和API,便于开发者根据需求进行扩展。 - **其他版本**:除了最初的Java版本,Lucene还被移植到了...