نمایش نتایج 1 تا 2 از 2

نام تاپیک: Full text index

  1. #1
    VIP آواتار hr110
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    ایران - تهران
    پست
    1,460

    Full text index

    یکی از ابزارهای قدرتمندی که در اسکیو ال وجود دارد، بخش زیر را یک زمانی در سایت ایران دولوپر تایپ کرده بودم که بد ندیدم در این جا نیز دوستان به ان نظری بیندازند:


    با سلام؛

    یکی از امکانات جالبی که SQL Server از نسخه 7 به بالا اضافه شده است همین امکان میباشد.

    در این امکان باید ابتدا کاتالوگهایی ایجاد شود و بعد از آن جداول را به این کاتالوگها اضافه نموده و در نهایت نیز باید فیلدهایی که قرار است Fulltext شوند تعیین خواهد شد. حال شما میتوانید بروی این جدول و فیلدهایی که کاندید شده اند جستجوهایی متنی کامل(full text) و یا جستجوهای مفهومی داشته باشید.

    در حالت اول شما میتوانید یک عبارت و یا ترکیبی از انها را داشته باشید. و در سریعترین زمان به آن دستیابی داشته باشید ، این سرعت را من در برنامه هایم تست کرده ام و در شرایط مساوی میتواند تا 10 برابر شود

    در جستجوی مفهومی نیز شما میتوانید با جملات انگلیسی از بانک اطلاعاتی سئوال کنید مثلا:"what is JAVA" و بانک اطلاعاتی جوابهای سوال شما را بصورت لیست از رکوردها که به آن مربوط میشود خواهد داد. از سوی دیگر شما در جستجوهایتان میتوانید بگویید که مثلا به دنبال کلمه eat بگرد و حالتهای ماضی و مضارع آن را (eating و ate) نیز اگر وجود دارد بیاور

    لازم به ذکر است که شما میتوانید stopwordها و یا کلمات زاید را تعریف کرده و عملیات ایندکس سازی و به پیرو آن جستجو روی آن ها انجام نشود مانند:the,and, است , بود , .....

    این تنها مزایای آن است ولی معایبی دارد که برخی از کاربران ترجیح میدهند که از آن استفاده نکنند:

    1- ایجاد یک fulltext کار زمانگیری بوده و باید دقیق انجام شود.

    2- رکوردهای جدید و یا ویرایش شده باید سرشماری(population) شوند تا بتوان روی آن جستجو کرد که این نیز خود مشکلات زیادی را ایجاد میکند.

    3- امکانات جستجوی مفهومی آن تنها برای زبان انگلیسی میباشد.

    4- کار کردن با آن برای زبانهای غیر انگلیسی از جمله فارسی مشکلات و تنظیمات خاصی نیاز دارد.

    5- فرمت دستورات آن مختص SQLServer بوده و از استانداردها تبعیت نمیکند.


    -------------

    با سلام؛

    1- ابتدا باید مطمئن شوید که فول تکست را هنگام نصب اسکیوال نصب کرده اید

    2- فول تکست بانک را فعال کنید(هر هنگام که فوتکست فعال نباشد باید ابتدا آنرا فعال کرد):

    SELECT DatabaseProperty ('DBNname','IsFulltextEnabled')


    اگر خروجی صفر باشید یعنی تا فعال نیست پس باید فعال شود:

    EXEC sp_fulltext_database 'enable'

    sp_configure "show advanced options",1
    reconfigure



    3- شما برای اینکه بتوانید بروی اطلاعات فارسی جستجو انجام دهید باید زبان پیش فرض فول تکست را زبان طبیعی(natural) کنید(اینکار فقط یک بار در عمر بانک اطلاعاتی انجام میشود):

    در اسکیو ال 7:

    sp_configure "language neutral full-text",1 
    reconfigure



    در اسکیوال 2000:

    sp_configure "default full-text language",1 
    reconfigure



    4- برای ایجاد کاتالوگ نام آنرا در این دستور وارد کنید،

    exec sp_fulltext_catalog 'CATName+','create'


    شما به هر تعداد که بخواهید میتوانید کاتالوگ تعریف کنید ولی در اسکیو ال 7 بیش از 5 کاتالوگ اکیداً توصیه نمیشود و با مشکلاتی روبرو خواهید شد!!!

    5- افزودن جدول به کاتالوگ، برای اینکار نیاز است که یک فیلد ایندکس داشته باشید(اینکار نیز تنها یکبار انجام خواهد شد)

    exec sp_fulltext_table 'TableName','create','CATName','IndexFieldName'


    6- حال نوبت افزودن فیلدها به کاتالوگ است:

    EXEC sp_fulltext_table TableName,'deactivate'
    EXEC sp_fulltext_column TableName,FullTextFieldName,'add'
    EXEC sp_fulltext_table TableName,'activate'



    تمامی فیلدها به این صورت باید به کاتالوگ اضافه شود برای اینکار بهتر است یک SP بنویسید:

    CREATE PROCEDURE AddColumn2FTC
    @TableName varchar(50),
    @FullTextFieldName varchar(50)
    AS
    EXEC sp_fulltext_table @TableName,
    'deactivate'
    EXEC sp_fulltext_column @TableName,
    @FullTextFieldName,
    'add'
    EXEC sp_fulltext_table @TableName,
    'activate'

    GO



    تا کار شما راهتر و سبکتر شود.



    7- برای اجرا سرشماری نیز از این دستورات استفاده کنید(توجه داشته باشید که دو نوع وجود دارد که برای اطلاعات بیشتر به راهنمای اسکیوال مراجعه کنید)

    EXEC sp_fulltext_catalog 'CATName','start_full'

    EXEC sp_fulltext_catalog 'CATName','start_incremental'



    8- نمونه ایی نیز از دستورات مربوطه:

    SELECT ProductName
    FROM Products
    WHERE CONTAINS(ProductName, ' "choc*" ')



    SELECT ProductName
    FROM Products
    WHERE CONTAINS(ProductName, 'spread NEAR Boysenberry')




    SELECT ProductName
    FROM Products
    WHERE CONTAINS(ProductName, ' FORMSOF (INFLECTIONAL, dry) ')



    و در نهایت باید عرض کنم که خیلی از مراحل بالا توسط ویزاردهای اسکیوال قابل انجام میباشد.
    ... چه بگویم که غم از دل برود چون تو بیایی

  2. #2
    این کدها رو در چه محیطی و چه حالتی باید اجرا کرد ؟ مثل تعویض زبان یا


    SELECT DatabaseProperty ('DBNname','IsFulltextEnabled')

تاپیک های مشابه

  1. full-text index
    نوشته شده توسط farzad sahraei در بخش SQL Server
    پاسخ: 5
    آخرین پست: شنبه 20 خرداد 1385, 12:07 عصر
  2. full text index
    نوشته شده توسط shakiba_12 در بخش SQL Server
    پاسخ: 15
    آخرین پست: جمعه 29 اردیبهشت 1385, 22:42 عصر
  3. فعال نبودن Full-text index
    نوشته شده توسط hasty_f در بخش SQL Server
    پاسخ: 1
    آخرین پست: شنبه 19 آذر 1384, 16:15 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •