lucenenet-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shad Storhaug <>
Subject RE: Encrypting Index files
Date Mon, 08 May 2017 19:20:18 GMT

As Lucene.Net is a port of Lucene the plan is not to add any additional features that don't
exist in Java Lucene (other than perhaps features that might make usage with .NET easier).

Search functionality is expected to be fast and encryption would certainly slow it down. In
general, I would say this isn't a good candidate for a feature. That said, you should be discussing
new features with the Lucene (Java) team, not here.


Lucene.Net does have extensibility that can accommodate encryption though - you can create
your own codec to store data in any format you want. You can supply your own codec by creating
a custom codec factory that subclasses DefaultCodecFactory and setting it by using the following
line at application startup:

Codec.SetCodecFactory(new MyCodecFactory());

You need to subclass the Codec class to provide your codec implementation. You can either
use convention-based naming or override the name with the [CodecName("My")] attribute. To
use convention-based naming, the codec class name should end with a "Codec" suffix. The name
that will be used within Lucene.Net and stored inside of your index will be the class name
excluding the suffix. For example, if your codec class is named MyCodec, the name used for
Lucene.Net will by "My" unless it is overridden with the [CodecName] attribute.

In your custom codec factory's constructor (MyCodecFactory), you should then call either PutCodecType(Type)
or ScanForCodecs(Assembly) to make Lucene.Net recognize your custom codec type. You can optionally
provide the codec via dependency injection by overriding GetCodec(Type) (codecs should all
be singleton instances), which allows you to create codecs with injected constructor arguments.

There are 2 additional extension points for DocValuesFormat and PostingsFormat that each have
their own factory that you would use similarly to supplying a custom codec, though I am not
sure whether they would be required since you can just return them from your custom Codec
type. You really only need to use this if you plan on using these formats in more than one

You can also override existing codecs by using the same names as the ones in Lucene.Net, so
you could in theory apply encryption to existing codecs by subclassing them, tweaking their
implementation, and using the [CodecName] attribute with the same name.

See the Java API documentation for more information about how you might write your own codec

Shad Storhaug (NightOwl888)

-----Original Message-----
From: Srini V [] 
Sent: Monday, May 8, 2017 11:10 PM
Subject: Encrypting Index files

Team,  Did we thought of encrypting index files for security.

View raw message