I've a credit card applicatoin where I have to search in a variety of text-based fields. The applying is developed using NHibernate being an ORM.

I must implement Porter Stemming in searches, to be able to have the ability to return relevant results even if the keyword matches an identical word, for instance the description of the product consists of memories as the search keyword is memory.

Can anybody suggest the very best practices for such kinds of searches? The very first concept that involves thoughts are to keep two version of the identical area in database, for instance:


The Description column will be the text as joined through the website administrator, and it is the written text visible around the frontend.

The Description_Search would come with exactly the same text, but passed via a Porter-Stemming formula. Search queries would then be in line with the Description_Search area, instead of Description.

Performs this seem sensible? Could it be a total waste of space needing to store two version of just about exactly the same text?

Also, would Lucene.Net help in this situation? I'm also considering integrating Lucene.Internet for full-text based searches but have not yet investigated it at length.

Thanks ahead of time!