ارسال پاسخ 
 
امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
ایجاد Full Text Search در SQL Server
03-18-2015, 02:47 AM
ارسال: #3
ایجاد Full Text Search در SQL Server بخش سوم
[تصویر:  6356228052410279470FT10009.jpg]

و یا از طریق اسکریپت:

کد:
USE [DbBooks]
GO
CREATE FULLTEXT INDEX ON [dbo].[tblBooks0] KEY INDEX [PK_tblBooks] ON ([BooksFtCatalog]) WITH (CHANGE_TRACKING AUTO)
GO
USE [DbBooks]
GO
ALTER FULLTEXT INDEX ON [dbo].[tblBooks0] ADD ([BooksTitle] LANGUAGE [Arabic])
GO
USE [DbBooks]
GO
ALTER FULLTEXT INDEX ON [dbo].[tblBooks0] ENABLE
GO
[تصویر:  6356228066252098600FT10010.jpg]

و برای تخصیص Stoplist به جدول مورد نظر از کد زیر استفاده می نماییم:

کد:
ALTER FULLTEXT INDEX ON [dbo].[tblBooks0] SET  stoplist = BooksStopList

پس از این مرحله باید مجددا Full Text Catalog را Rebuild نمود تا تغییرات مورد نیاز بر روی جدول اعمال شود.

[تصویر:  6356228077027834160FT10011.jpg]
[تصویر:  6356228090190959030FT10012.jpg]
[تصویر:  6356228090191059051FT10013.jpg]

پس از این مرحله می توان لیستی که توسط SQL Server برای جستجو ایجاد کرده به همراه تعداد نتیجه های بدست آمده با استفاده از کد زیر مشاهده نمود:

کد:
SELECT * FROM sys.dm_fts_index_keywords  
(DB_ID('DbBooks'), OBJECT_ID('tblBooks0')) d
order by d.document_count desc

[تصویر:  6356228103880603570FT10014.jpg]

البته از کلمه هایی که تعداد نتایج بیشتری دارند نیز می توان صرفنظر نمود. (مانند 'های' و 'ها' در لیست بالا)

تفاوت در دو نوع جستجو دستورهای Like و Contains

کد:
select * from tblBooks0 b where b.BooksTitle like '%آکس%'
select * from tblBooks0 b where Contains(b.BooksTitle , '"*آکس*"')

[تصویر:  6356228126589254250FT10016.jpg]
[تصویر:  6356228123007799110FT10015.jpg]

ضمنا با استفاده از کد SQL زیر می توانید کلمه های با نتایج با لاتر را استخراج نموده و آنها را به STOP List WORD اضافه نمایید.

کد:
SELECT *  ,
'ALTER FULLTEXT STOPLIST [BooksStopList] ADD '  
+ '''' + d.display_term + '''' + ' LANGUAGE  ''Arabic'';'
SELECT *  ,
'ALTER FULLTEXT STOPLIST [BooksStopList] ADD '  
+ '''' + d.display_term + '''' + ' LANGUAGE  ''Arabic'';'
FROM sys.dm_fts_index_keywords  
(DB_ID('DbBooks'), OBJECT_ID('tblBooks0')) d
where ISNUMERIC(d.display_term) = 0 and document_count >= 500  
and d.display_term <> 'END OF FILE'
order by d.document_count desc

این کد در حقیقت کد مربوط به درج کلمه های مورد نظر به StoplistWords را تولید می کند. (مثال زیر)

کد:
ALTER FULLTEXT STOPLIST [BooksStopList] ADD 'های' LANGUAGE  'Arabic';
ALTER FULLTEXT STOPLIST [BooksStopList] ADD 'ها' LANGUAGE  'Arabic';
ALTER FULLTEXT STOPLIST [BooksStopList] ADD 'با' LANGUAGE  'Arabic';

پس از درج این کلمه ها که نتایج جستجوی بالایی دارند ، مجددا Catalog را Rebuild می نماییم تا تغییرات مورد نظر در لیست اعمال شود.
برای Rebuild کردن مجدد می توان از اسکریپت زیر استفاده نمود:

کد:
alter fulltext catalog FtName rebuild


==================================================
طراحی وب سایت
پروژه های برنامه نویسی تجاری
دانلود پروژه های ASP.NET وب سایتهای آماده به همراه توضیحات
دانلود پروژه های سی شارپ و پایگاه داده SQL Server همراه توضیحات و مستندات
دانلود پروژه های UML نمودار Usecase نمودار class نمودرا activity نمودار state chart نمودار DFD و . . .
دانلود پروژه های حرفه ای پایگاه داده SQL Server به همراه مستندات و توضیحات
پروژه های حرفه ای پایگاه داده Microsoft access به همراه مستندات و توضیحات
دانلود پروژه های کارآفرینی
دانلود گزارشهای کارآموزی کارورزی تمامی رشته های دانشگاهی
قالب تمپلیت های آماده وب سایت ASP.NET به همراه Master page و دیتابیس
برنامه های ایجاد گالری عکس آنلاین با ASP.NET و JQuery و اسلایدشو به همراه کد و دیتابیس SQL کاملا Open Source واکنشگرا و ساده به همراه پایگاه داده
==================================================
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پیام‌های داخل این موضوع
ایجاد Full Text Search در SQL Server بخش سوم - ali - 03-18-2015 02:47 AM

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان