This project is read-only.

imageLIFTI provides a simple API that allows you to build a searchable full text index. This can be useful for document retrieval or simply allowing .NET objects to be searched for by associated text.

Version 0.5 of the library introduces the PersistedFullTextIndex which automatically persists the index to a backing file store as it is being used. This opens up the possibility of using it in an application to index text associated to data stored in a database that doesn’t provide its own full text indexing services, such as SQL Server Compact.

There are 3 samples (4 if you count the timing comparison application) included in the solution – these should give you a pretty good idea how to get started. They’re also included as binaries in the download.

This project started as a single blog entry and has grown into something that may actually be genuinely useful. The basic principle behind LIFTI is that it allows you to index items (or their keys) against text associated to them - once the text has been indexed it is stored in a compact and searchable form, meaning that the overall text for each item need not be persisted.

The documentation is now up to date with the 0.5 release – I’ll probably look to extend the documentation further in the near future..

LIFTI is currently compiled against version 3.5 of the .NET Framework – I’m probably going to be moving it to version 4.0 in the next release – if you want to influence this in one way or the other make your thoughts known!

Installing LIFTI

Manual Installation

LIFTI is available from the downloads page – download and extract the binaries yourself and reference them in your project.


LIFTI is also available as a nuget package. Nuget is a great way to add and manage your project dependencies.


My blog ( is where a lot of articles about LIFTI have, and will continue, to appear.


Using LIFTI in an MVC 3 application

Recent articles

PersistedFullTextIndexes with non-primitive types
Describing the LIFTI persistence file format
Introduction to the XmlWordSplitter class
Discussion of the breaking changes between versions 0.4 and 0.5

Older links

This original article describing the initial intentions of this project
This article explains the new word stemming features available in LIFTI
An example of using a custom word splitter to index Pascal-cased words
An article discussing the querying, updatable index and serialization changes

Last edited May 27, 2013 at 10:14 AM by MikeGoatly, version 17