SolrDirectoryFactory的配置

SolrDirectoryFactory的配置:

Apache Lucene 以及 Solr 一个重要的属性是 Lucene 目录实现。目录接口为 Lucene 提供抽象的 IO 操作层。尽管选一个目录实现看起来很简单,但是在极端情况下,它会影响性能。以下将为你讲解如何选择正确的目录实现。

为了使用期望的目录,要做的就是选择正确的目录实现的工厂类,然后告知 solr。假设你打算使用 NRTCachingDirectory 作为你的目录实现,为了实现这个,需要在 solrconfig.xml 中设置以下内容:

这就是所有要做的,很简单,但是有哪些工厂可用呢,在Solr4.2版本中,有以下工厂可用:

solr.StandardDirectoryFactory

solr.SimpleFSDirectoryFactory

solr.NIOFSDirectoryFactory

solr.MMapDirectoryFactory

solr.NRTCachingDirectoryFactory

solr.RAMDirectoryFactory

现在,让我们分别看看每个工厂。

在深入了解每个工厂的细节前,我们先了解一些工厂的配置参数。directoryFactory 的参数一共两个,一个是 name,name 要设置成 “DirectoryFactory”,另外一个是 class,class 设置成我们所选的工厂实现类。

打算让 solr 自行决定使用哪个工厂时,可以使用 solr. StandardDirectoryFactory。该实现是基于文件系统形式的,依赖当前操作系统和 Java 虚拟机。

如果在一个小系统中使用,没有很多线程,这样可以使用 solr.SimpleFSDirectoryFactory,这个工厂将索引文件保存在本地的文件系统中,它不适用于大量线程访问的情况。

solr.NIOFSDirectoryFactory 可以适用于多线程同时访问,但是它在 Windows 平台不能很好工作,这是因为 JVM 的 bug。

solr.MMapDirectoryFactory 是从 solr 3.1 到 4.0 在 64 位 Linux 系统上的默认目录工厂。这个目录实现类适用虚拟内存和内核中一个叫 mmap 的特性来访问存在磁盘上的文件。它允许 Lucene 直接访问 I/O 缓存,当不需要准实时搜索时,这个目录实现是一个非常不错的选择。

如果需要准实时搜索,你需要使用 solr.NRTCachingDirectoryFactory,它设计成将索引的一部分放在内存中来加速准实时操作。

最后一个目录工厂是 solr.RAMDirectoryFactory,这是唯一一个非持久化的工程,整个索引是存放在 RAM 内存中,这样在系统重启或崩溃时,将丢失所有索引。这样你可能会问,那为什么使用这个工程?在自动完成功能和单元测试时,这种工程还是有用的。另外需要注意的是这种工程也不是为大数据设计的。

但是在服务器上建1亿数据时各种内存吃紧,有朋友这么建议:

“你那个内存消耗,肯定不适合mmap的,StandardDirectoryFactory太吃io了,solr.NRTCachingDirectoryFactory会导致jvmGC的压力太大,用NIO吧” 另外:”MergeFactor要根据数据要合理的调整,默认的10不行设大一点”

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mylife512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值