1尽量减少不必要的存储。
基本的办法是在添加特定的文档时,使用不存储原始内容的Store.NO,或则压缩存储Store.COMPRESS
2不需要检索的内容不要建立索引
,
3非格式化的文本需要提前转化
,比如时间货浮点数字。
4需要整体存方的内容不要分词
,比如readme.txt
5注意对索引参数的优化
主要用下面几个函数:
setMergeFactor(),设置合并参数。
setMaxbufferedDocs(); 设置最大文档个数。
setMaxFieldLength();限制域索引的个数。
setMaxBufferedDeleteTerms();设置最大内存删除项数。
6合理选择使用磁盘索引还是内存索引。
下面是一个使用内存索引的例子
package chapter5;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
public class LuceneIndexCombine {
private static String dest_Index_Path = "D:\\workshop\\TextIndex";
private static String text_File_Path = "D:\\largeData\\xx.txt";
public static void main(String[] args) throws IOException{
Date start=new Date();
try {
File file=new File(text_File_Path);
FileReader reader=new FileReader(file);
Directory dir=FSDirectory.getDirectory(dest_Index_Path);
Directory ramdir=new RAMDirectory();
Analyzer analyzer=new SimpleAnalyzer();
IndexWriter index=new IndexWriter(dir,analyzer,true);
IndexWriter ramIndex=new IndexWriter(ramdir,analyzer,true);
Document document=new Document();
Field name=new Field("path",file.getName(),Field.Store.YES,Field.Index.UN_TOKENIZED);
document.add(name);
Field content=new Field("content",reader);
document.add(content);
ramIndex.addDocument(document);
ramIndex.close();
index.addIndexes(new Directory[]{ramdir});
index.optimize();
index.close();
Date end=new Date();
long tm_index=end.getTime()-start.getTime();
System.out.println("Total Time:(ms)");
System.out.println(tm_index);
IndexReader ramIndexReader=IndexReader.open(ramdir);
System.out.println("Ram Index Reader doc nums:"+ramIndexReader.maxDoc());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
《Lucene 2.4与Nutch学习笔记:在多文档中搜索关键词》 Lucene是一个高性能、全文检索库,而Nutch则是一个开源的网络爬虫项目,两者结合使用,能够实现对大量文本文档的高效搜索和索引。这篇学习笔记主要探讨如何...
Lucene+Nutch源码.rar Lucene学习笔记.doc nutch_tutorial.pdf nutch二次开发总结.txt nutch入门.pdf nutch入门学习.pdf Nutch全文搜索学习笔记.doc Yahoo的Hadoop教程.doc [硕士论文]_基于Lucene的Web搜索引擎实现....
由于 Nutch 的 lucene 索引仅索引不存储原文,所以在查询时需要根据 segment 信息获取页面内容。 总之,Nutch 0.8 是一个强大的搜索引擎框架,利用 Hadoop 提供了分布式爬取和索引能力。通过理解其核心组件、目录...
### Nutch全文搜索学习笔记 #### 一、Nutch安装与配置 **1. Linux环境下的JDK安装** 为了能够顺利地安装并运行Nutch,首先确保系统中已安装Java Development Kit (JDK) 并且正确配置了`JAVA_HOME`环境变量。如果...
这个学习笔记主要涵盖了Lucene的基本概念,包括索引、文档、域和项,以及安装配置和索引的基本过程。 1. **基本概念** - **索引(Index)**:索引是Lucene的核心,它是由一系列文档组成的。每个索引包含了对文档...
**Lucene笔记** Lucene是Apache软件基金会的一个开放源代码项目,它是一个全文搜索引擎库,提供了文本检索和分析的核心工具。作为一个高性能、可扩展的信息检索库,Lucene被广泛应用于各种搜索应用,如网站搜索、...
### Hadoop数据分析平台学习笔记 #### 一、Hadoop概述 **Hadoop**是一个开源软件框架,用于分布式存储和处理大型数据集。它的设计灵感来源于Google的论文,其中包括Google文件系统(GFS)和MapReduce计算模型。...
【Hadoop学习笔记】 Hadoop 是一个开源框架,主要用于处理和存储大数据。它源自于解决互联网公司面临的海量数据处理问题,特别是Google发布的三篇技术论文,即GFS(Google File System)、MapReduce以及BigTable。...
Doug Cutting是著名的开源搜索技术倡导者和创造者,他之前还创立了Lucene和Nutch等项目。 - **命名由来**:Hadoop这个名字来源于Cutting的孩子给一头玩具大象起的名字,它是一个非正式的名称,简单易记,没有特殊...
例如,在安装和配置Hadoop集群时,需要使用Linux命令进行环境设置,以及编写shell脚本来自动化管理任务。 在搭建Hadoop大数据平台时,通常会用到CentOS这个稳定的操作系统。在新建CentOS7虚拟机时,需要注意配置根...
随着需求的增长,Cutting与Mike Cafarella合作,开发了Nutch,一个基于Lucene的开源搜索引擎项目,旨在提供类似Google的全网搜索功能。随着互联网的爆炸式增长,数据量激增,Google的GFS(Google File System)和...