lucene(二)索引的建立 Directory,lockFactory
来源:互联网 发布:mac 使命召唤 编辑:程序博客网 时间:2024/05/29 19:42
生成索引的过程:
Analyzer analyzer = new StandardAnalyzer();//分词器,决定内容的分词方式
Directory directory = FSDirectory.open(Paths.get("D:\\index"));//创建存储目录Directory
IndexWriterConfig config = new IndexWriterConfig(analyzer);//写索引的配置
IndexWriter iwriter = new IndexWriter(directory, config);//写索引类
Document doc = new Document();//类似于数据库一条数据,一个Document对象
String text = "This is the text to be indexed.";
doc.add(new Field("fieldname", text, TextField.TYPE_STORED));
//Field类似于数据库一个字段,往Document上添加
iwriter.addDocument(doc);//添加索引(其实是update)
iwriter.close();//释放资源
Directory directory =FSDirectory.open(Paths.get("D:\\index"))
Directory是org.apache.lucene.store包下的类
public static FSDirectory open(Path path) throws IOException {
//第二个参数使用了默认文件锁工厂 NativeFSLockFactory,是一个单例工厂
有一个方法makeFSLock根据文件目录,文件名获得文件的唯一锁NatvieFSLock
return open(path, FSLockFactory.getDefault());}
public static FSDirectory open(Path path, LockFactory lockFactory) throws IOException {
if (Constants.JRE_IS_64BIT && MMapDirectory.UNMAP_SUPPORTED) {
return new MMapDirectory(path, lockFactory);
} else if (Constants.WINDOWS) {
return new SimpleFSDirectory(path, lockFactory);
} else {
return new NIOFSDirectory(path, lockFactory);
}
}
NativeFSLock(NativeFSLockFactory的内部类)
持有一个线程安全的Set保存所有锁的集合 private static final Set<String> LOCK_HELD
= Collections.synchronizedSet(new HashSet<String>());
有一个线程安全的obtain方法获取锁,close方法释放锁.
BaseDirectory的种类 MMapDirectory, SimpleFSDirectory, NIOFSDirectory,RAMDirectory
MMapDirectory
把Lucence的索引当作了swap file来处理,用到了虚拟内存的映射关系读取 64位且支持虚拟内存的系统,默认用的这个详细介绍 http://www.cnblogs.com/huangfox/p/3616298.html(推荐使用)
SimpleFSDirectory
BaseDirectory的简单实现 poor concurrent performance (不支持MMapDirectory的Windows系统使用)
NIOFSDirectory
用FileChannel进行读写操作,支持多线程,不适用Windows(Sun的FileChannel.read有bug),IO线程阻塞时,
从一个线程直接或间接的访问这个类被中断时,会立刻关闭底层文件描述符,
继续访问会抛出ClosedChaanelException
RAMDirectory 内存存储
0 0
- lucene(二)索引的建立 Directory,lockFactory
- Lucene索引的建立
- Lucene.Net索引的建立
- lucene界面索引的建立
- Lucene学习--索引的建立
- lucene建立索引的过程
- Lucene整理--索引的建立
- lucene(索引的建立)
- lucene对文件建立索引之二
- lucene学习笔记(二)lucene建立索引
- Lucene的索引文件格式(二)
- lucene索引建立的效率研究
- Lucene-建立索引的简单例子
- lucene的索引建立及查找
- lucene中建立实时索引的方法
- lucene学习——索引的建立
- Lucene 课程2---索引的建立
- lucene的建立索引,搜索,中文分词
- SpringMVC中ModelAndView跳转错误的问题
- HDU 4586 Play the Dice(概率+期望)
- HDU_1233《还是畅通工程》
- SpringMVC ajax post 提交数据,报错406:Not Acceptable
- WPF利用多线程的后台线程
- lucene(二)索引的建立 Directory,lockFactory
- 公司拷贝不了文件到U盘,如何处理呢?
- MFC串口编程详细教程
- 在KVM客户机RHEL6中安装Xen4.x
- 将字典或者数组转换成JSON数据或者字符串
- 如何查找java.lang.NullPointerException的原因
- 【iOS知识学习】_iPhone学习微信分享到好友/短信
- 不容易系列之(3)—— LELE的RPG难题
- Maven将依赖一起打包--使用maven-assembly-plugin