به صورت خلاصه اگر نیاز به جستجوی سریع و پیشرفتهای بر روی حجم عظیمی از اطلاعات دارید، روش متداول select * from table where field
like something توصیه نمیشود. بسیار کند است؛ مصرف CPU بالایی دارد. از ایندکس استفاده نمیکند.
راه حل توصیه شده جهت برخورد با این نوع مسایل استفاده از full text search است. نگارش کامل SQL Server حاوی یک موتور FTS
توکار هست . اگر از بانک اطلاعاتی خاصی استفاده میکنید که دارای موتور FTS نیست یا ... FTS مخصوص SQL Server به درد کار شما نمیخورد یا نیاز به سفارشی سازی دارد (مثلا امکان تعریف stop words فارسی (کلماتی مانند به، از، تا و امثال آن))، از موتور FTS جانبی دیگری به نام
لوسین نیز میتوان استفاده کرد.
در کنار اینها ابزاری برای آنالیز و کوئری گرفتن از فایلهای ایندکس تهیه شده توسط لوسین نیز وجود دارد به نام
Luke. برای نمونه اگر بانک اطلاعاتی سایت جاری را با لوسین به نحو متداولی ایندکس کنیم، در صفحه اول این برنامه، top ranking terms آن به شکل زیر ظاهر میشود:
در اینجا چون متون تهیه شده از نوع HTML هستند، تگ br در آنها زیاد است و یا یک سری حروف و کلمات فارسی هم در صدر قرار دارند که بهتر است از لیست ایندکس حذف شوند. برای اینکار تنها کافی است یک hash table را به نحو زیر تعریف و به StandardAnalyzer لوسین ارسال کنیم:
var stopWords = new Hashtable();
stopWords.Add("br","br");
// ...
var analyzer = new StandardAnalyzer(Version.LUCENE_29, stopWords);
یا آقای عرب عامری برای حروف و کلمات فارسی که نباید ایندکس شوند، یک لیست نسبتا جامع را
در اینجا تهیه کردهاند.
اینبار اگر stop words یاد شده را اعمال و مجددا ایندکسها را تهیه کنیم به خروجی بهتری خواهیم رسید.
در کل حداقل از این لحاظ، لوسین نسبت به FTS توکار SQL Server مناسبتر به نظر میرسد.