package com.lucene;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
public class RamAndDiskIndex {
private static String path = "d:/index";
public static void main(String[] args) {
index();
search();
}
public static void index(){
try{
Directory ramDir = new RAMDirectory();
Directory diskDir = FSDirectory.getDirectory(path);
IndexWriter ramWriter = new IndexWriter(ramDir,new StandardAnalyzer(),true);
IndexWriter diskWriter = new IndexWriter(diskDir,new StandardAnalyzer(),true);
//新增一条数据到内存索引中,然后再由内存索引加入到磁盘索引中去
Document doc = new Document();
doc.add(new Field("id","123456",Field.Store.YES,Field.Index.TOKENIZED));
doc.add(new Field("value","hello world",Field.Store.YES,Field.Index.TOKENIZED));
//添加到内存
ramWriter.addDocument(doc);
//关闭ram的IndexWriter实例,把数据给ramDir, 必须要先关闭,然后才能调用addIndexes方法把ramDir参数传入;
ramWriter.close();
//通过disk的IndexWriter实例的addIndexes
diskWriter.addIndexes(new Directory[]{ramDir});
diskWriter.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static Query queryParser(){
QueryParser queryParser = new QueryParser("value", new StandardAnalyzer());
try {
Query query = queryParser.parse("world");
return query;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void search(){
try {
IndexSearcher search = new IndexSearcher(path);
Query query = queryParser();
Hits hits = search.search(query);
if(hits==null)
return;
for (int i = 0; i < hits.length(); i++) {
Document doc = hits.doc(i);
System.out.println("id = "+hits.id(i));
System.out.println("");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
支持全文检索的内存索引
多核处理器环境下内存数据库索引性能分析的技术文档,非常简单易懂。大家赶紧参考啊!
4、索引高度:索引高度是指由于数据行的插入操作而产生的索引层数,当表中添加大量数据时,oracle将生成索引的新层次以适应加入的数据行,因此,oracle索引可能有4层,但是这只会出现在索引数中产生大量插入操作的...
索引能够有效降低数据的搜索空间、提高内存数据库的查询效率,然而当前它却受到性能和效率的挑战。 基于图形处理器的通用计算(GPGPU)在多个领域具有重要的研究价值和应用前景,也是当前研究的热点。目前图形...
问数据库的需求,将数据库核心数据驻留在内存中,可以使用内存数据库来满足需求。Hash 索引是数据库系统中广泛使用的索引技术之一, 它能够快速地访问数据,易于设计和实现。该文根据内存数据库的特点,为电信网管...
oracle 分区索引,本地索引,全局索引的区别
介绍mysql不同的存储引擎 以及 索引技术在mysql中的应用
索引名:索引的名称,索引名在一个表中名称必须是唯一的。 列名:表示创建索引的列名。 长度:表示使用列的前多少个字符创建索引。使用列的一部分创建索引可以使索引文件大大减小,从而节省磁盘空间。BLOB或TEXT列...
• 局部性原理:软件设计要尽量遵循“数据读取集中”与“使用到一个数据,大概率会使用其附近的数据”,这样磁盘预读能充分提高磁盘IO • 数据库的索引最常用B+树: (1)很适合磁盘存储,能够充分利用局部性原理,...
关于索引的介绍,以及b+树结构图,两种索引性能比较,索引优化建议
本文档包含了索引节点、硬链接、软连接以及连接的创建!
索引结构文件包括一级索引,二级索引 #include #include #include #include #include #define BLOCKNUM 8000 //磁盘物理块个数 #define DIRECT_ADDR_NUM 10 //直接寻址地址个数 #define INDEXTABLE_NUM 100 //...
如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。...
SKIP_UNUSABLE_INDEXES的使用与索引失效解决方法[参照].pdf
自定义中文索引Listview
根据字符样式自动生成索引,支持四级中文索引
SQL Server 索引结构及其使用(聚集索引和非聚集索引)的区别与实例讲解,提高查询速度。
如果查询语句使用索引(通常是where条件匹配索引)就会利用树的结构加快查找,索引会按值查找到要查找的行在表中位置,不需回表查询数据的就是聚簇索引(索引和数据存放在一起)。通常是需要回表再查数据,需要消耗...
一、 创建主键(主键=主键索引=聚集索引) 主键是什么? 答:拿主键可以唯一确定一条数据,它和物理存储排序一致,不能为空,一个表只能有一个。 原本没有创建的主键的表在磁盘上存储为: Id=0;username=username0;sex...
您可以将其永久存储到磁盘: cacheId = { 'bigArray', 'version', 1 }; disk_cache('set', ds, cacheId); 以后可以通过ds = disk_cache('get', cacheId); 使用 .mat 文件的优点: * 使用任意键索引* 使用 ...