lucene以及他的solr们最重要的一个属性就是他的目录实现(索引存储方式),这个接口提供抽象的IO操作层,配置不当会严重影响性能。
在solr中这个配置是在solrconfig.xml文件中的directoryFactory标签完成的,配置示
例如下:
代码如下 | 复制代码 |
<directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.NRTcachingDirectoryFactory}"/> |
solr提供了好几种目录工厂类,分别如下:
1:solr.StandardDirectoryFactory,这是一个基于文件系统存储目录的工厂,它会试图选择最好的实现基于你当前的操作系统和Java虚拟机版本。
2:solr.SimpleFSDirectoryFactory,适用于小型应用程序,不支持大数据和多线程。
3:solr.NIOFSDirectoryFactory,适用于多线程环境,但是不适用在windows平台(很慢),是因为JVM还存在bug。
4:solr.MMapDirectoryFactory,这个是solr3.1到4.0版本在linux64位系统下默认的实现。它是通过使用虚拟内存和内核特性调用mmap去访问存储在磁盘中的索引文件。它允许lucene或solr直接访问I/O缓存。如果不需要近实时搜索功能,使用此工厂是个不错的方案。
5:solr.NRTCachingDirectoryFactory,此工厂设计目的是存储部分索引在内存中,从而加快了近实时搜索的速度。
6:solr.RAMDirectoryFactory,这是一个内存存储方案,不能持久化存储,在系统重启或服务器crash时数据会丢失。且不支持索引复制。
时间: 2024-09-25 10:17:52