lucene codec是如何集成的

From Evernote:

lucene codec是如何集成的

lucene 4.0 后整体结构上一个最大的变化就是用户可以写各个codec,为扩展提供了极大的便利。

1. 那整体设置上是如何的呢?切入点是在哪里

codec

2. codec中使用哪些实现,通过

SPI(service provider interface) 来实现。

http://en.wikipedia.org/wiki/Service_provider_interface

3. codec 又是怎样初始化的呢? 也就是说如何配置使用哪个codec

    理解下spring的bean配置,可能会想到是否也利用同样的机制来配置决定使用哪个codec呢?

    同时再思考下,我们有时是不是经常对某一变量先new 一个default value,但同时又提供一个set方法,

     好让外界有机会根据自己的需要来modify这个value。

    没错,其实我们平时在用的这一套方法论也同样适用lucene中如何引用codec。

   对于Codec的总入口类 Codec,提供了一个获取default codec的方法:

  ……

 private static Codec defaultCodec = Codec.forName(“lucene41″);

  …….

  public static Codec getDefault(){

     return defaultCodec;

    }

spi实现的简单解释:

在resources目录下,创建 

完整classname的文件,

文件中内容是文件名对应接口的实现类,

在这个例子中就是各个不同版本的codec实现类。

目前的实现如果想升级某类field的format,必须升级整个codec,不能单独为一个field进行配置

   

Tagged , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>