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

نام تاپیک: مشکل جستجو با استفاده از Full Text Search

  1. #1
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    مشکل جستجو با استفاده از Full Text Search

    با سلام.

    من در SQL Server 2005 CTP در یکی از دیتابیس هام برای یک جدول Full Text Search Catalog تعریف کرده ام.

    این جدول حاوی ستون نام افراد است و مقادیری مانند "رضایی"، "رضا"، "علیرضا" در رکوردهای آن قرار دارند.

    با دستوری مانند زیر دنبال کلمه "رضا" میگردم:
    Select * from Users where Contains(*,'"*رضا*"') 

    در نتیجه خروجی فقط رکوردهایی مانند "رضایی" و "رضا" برگردانده میشوند ولی "علیرضا" در نتیجه خروجی وجود ندارد.

    کسی درباره مبدا مشکل اطلاعی دارد؟

  2. #2
    سلام دوست عزیزم،
    FTS جستجو روی پیشوند رو پشتیبانی نمیکنه. یعنی عبارت مورد جستجو حتما باید حرف اولش مشخص باشه و اگر * وجود داشته باشه، نادیده گرفته خواهد شد. BOL هم در < prefix term > ::= بهش اشاره کرده(راهنمای CONTAINS). این مطلب منطقی به نظر میرسه چون Full Text Indexing لغات رو Sort میکنه که در Sort باید ابتدای کلمه مشخص باشه.
    در مورد لغات لاتین هم این موضوع صادقه.

  3. #3
    من یه Full Text Search Catalog ساختم اما نمیتونم جدولی رو که میخوام انتخاب کنم
    چه جوری باید از این استفاده کنم

  4. #4
    به راهنمای دستور CONTAINS رجوع کنین، چندین مثال خوب وجود داره..

  5. #5
    خوب مشکل همینه که من نمیتونم از این دستور استفاده کنم پیغام میده که شما ایندکس روی جدولتون ندارید و این دستور شناخته شده نیست
    من وقتی یه Full Text Search Catalog ساختم چه جوری باید بگم روی کدوم جدول این ایندکس تعریف بشه
    و در ثانی این نحوه جسنجو فقط برای فیلهای متنی کار ساز هست یا هر نوع فیلدی
    و یه عنوان دیگه که توی منوی وظایف جدول ها با عنوان manage index هست آیا ارتباطی به این ایندکس گذاری داره یا نه فقط برای sort کردن یه فیلدی که ما انتخاب میکنیم هست
    ممنون میشم اگه به سوالاتم جواب بدید

  6. #6
    بهترین کلر استفاده از دستور like باید باشه البته هنوز نمیدونم دقیقا این چیزیه که شما دنبالش هستین یانه امیدوارم همین باشه
    Select * from Users where name like '%رضا%'
    منی که نام شراب از کتاب می شستم
    زمانه کاتب دکان می فروشم کرد.

  7. #7
    الان فکر کنم متوجه شدم باید توضیح بدم که ساختن ایندکسهای تمام متنی .با ساختن ایندکسهای متنی تفاوت جزئی داره برای ساختن این ایندکسها هیچ دستور ddl وجود نداره و باید از ویزارد موجود در اینتر پرایز استفاده کنین برای راه انداختن این ویزارد باید جدول مورد نطرتون رو در اینتر پرایز انتخاب کنین و روی جرول راست کلیک کنین و درمنوی نمایش داده شده full_text index رو انتخاب کنین
    با ویزاردی که ظاهر میشه کارتون رو انجام بدین فقط اینم میدونم که روی ستونهای از نوع text این کار امکان پذیر نیست
    منی که نام شراب از کتاب می شستم
    زمانه کاتب دکان می فروشم کرد.

  8. #8
    نقل قول نوشته شده توسط setarehman
    خوب مشکل همینه که من نمیتونم از این دستور استفاده کنم پیغام میده که شما ایندکس روی جدولتون ندارید و این دستور شناخته شده نیست
    من وقتی یه Full Text Search Catalog ساختم چه جوری باید بگم روی کدوم جدول این ایندکس تعریف بشه
    و در ثانی این نحوه جسنجو فقط برای فیلهای متنی کار ساز هست یا هر نوع فیلدی
    و یه عنوان دیگه که توی منوی وظایف جدول ها با عنوان manage index هست آیا ارتباطی به این ایندکس گذاری داره یا نه فقط برای sort کردن یه فیلدی که ما انتخاب میکنیم هست
    ممنون میشم اگه به سوالاتم جواب بدید
    دوست عزیزم،
    روی جدول Right Click کنین و Define Full-Text... رو انتخاب کنین. جدول شما باید حتما اقلا یک ایندکس یونیک داشته باشه که در ابتدای Wizard از شما سوال میکنه کدام ایندکس یونیک رو برای این کار انتخاب میکنین.
    تنها فیلدهای کاراکتری برای این عمل قابل انتخاب هستند. وقتی در حال انتخاب فیلدها هستین، یادتون باشه Language رو روی neutral تنظیم کنین (اگر اطلاعات شما فارسی هستش )
    بعد از ساخته شدن Catalog، روی اون Right Click کنین و Start Full Population انجام بدین.
    اگر تا اینجا همه چیز بدون مشکل پیش رفته، الان CONTAINS باید قابل استفاده باشه.
    در مورد ایندکس یونیک، قبل از آغاز Wizard، باید ایندکس رو ایجاد کرده باشین. این ایندکس با Full Text Index فرق داره.
    موفق باشید

  9. #9
    نقل قول نوشته شده توسط sarami
    الان فکر کنم متوجه شدم باید توضیح بدم که ساختن ایندکسهای تمام متنی .با ساختن ایندکسهای متنی تفاوت جزئی داره برای ساختن این ایندکسها هیچ دستور ddl وجود نداره و باید از ویزارد موجود در اینتر پرایز استفاده کنین برای راه انداختن این ویزارد باید جدول مورد نطرتون رو در اینتر پرایز انتخاب کنین و روی جرول راست کلیک کنین و درمنوی نمایش داده شده full_text index رو انتخاب کنین
    با ویزاردی که ظاهر میشه کارتون رو انجام بدین فقط اینم میدونم که روی ستونهای از نوع text این کار امکان پذیر نیست
    تمام این کارها دستور T-SQL دارند:
    sp_fulltext_catalog
    sp_fulltext_column
    sp_fulltext_database
    sp_fulltext_table

    ضمن اینکه استفاده عمده Full Text Search برای جستجو در متنهای حجیم داخل فیلدهای Text و nText هست.

  10. #10
    جهت اطلاعات بیشتر خدمتتون عرض کنم که مطالب من بر گرفته از کتاب transact-sql نوشته لاول مائر و ترجمه آقای کامران سیروسیان می باشد صحبت های قاطعانه شما من رو به شک انداخت و مجبور شدم داخل کتاب بگردم تا صحت گفته هام رو دوباره چک کنم در مورد دستور ddl رجوع به صفحه 237 عین متن:
    برای ساختن ایندکسهای تمام متنی هیچ دستوری در ddl وجود ندارد.
    درمورد ستونهای text رجوع به صفحه 238 عین متن:
    اگرچه ایندکس تمام متنی را میتوان روی ستونهای از نوع varchar ساخت ولی ساختن آن بر روی ستونهای از نوع text امکان پذیر نیست.
    منی که نام شراب از کتاب می شستم
    زمانه کاتب دکان می فروشم کرد.

  11. #11
    برای ساختن ایندکسهای تمام متنی هیچ دستوری در ddl وجود ندارد.
    عرض شد که دستور T-SQL دارند، نه DDL.
    اگرچه ایندکس تمام متنی را میتوان روی ستونهای از نوع varchar ساخت ولی ساختن آن بر روی ستونهای از نوع text امکان پذیر نیست.
    BOL > Accessing and changing relational data > Full-text Search > Full-text Querying SQL Server Data

    همچنین در داخل master..sp_fulltext_column این قسمت به خوبی Typeهای قابل قبول برای Full Text Search رو مشخص میکنه:

    -- VALIDATE COLUMN TYPE --
    if @typename NOT in (N'nchar',N'nvarchar',N'ntext',N'char',N'varchar', N'text', N'image')
    begin
    raiserror(15611,-1,-1,@colname,@tabname)
    goto error_abort_exit
    end

  12. #12
    آقای ثباتی این ایندکس یونیک رو من باید به ساختار بانک اطلاعاتیم اضافه کنم
    یعنی فیلدی باید براش تعریف کنم؟
    چون گفتم من از طریق index manage یه ایندکس روی جدولم قرار میدم که این این ایندکس فقط برای من یه فیلدی رو که انتخاب کردم sort میکنه فقط همین

  13. #13
    این ایندکس رو باید برای جدول روی فیلد تعریف کنین. اگر ایندکسی که میفرمایید در حال حاضر وجود داره، یونیک هستش، از همین میتونین در Full Text Indexing هم استفاده کنین.

  14. #14
    مرسی حل شد به دلیل اینکه جدول من primery key نداشت ایندکس ساخته نمیشد
    فقط من فرق بین این و like رو نمیفهمم
    چه مزیتی نسبت به like داره

  15. #15
    Like این قابلیت رو داره که حتی وسط یک کلمه رو جستجو کنه مثلا

    Like '%سلام%'

    که میتونه لغات: اسلام، سلامی و ... رو بدست بیاره. ولی از نظر نحوه جستجو روش بسیار نا کارآمدی برای حجمهای بالا محسوب میشه. در مقابل، FTS روش بسیار خوبی داره ولی همونطور که در اولین پست های همین تاپیک بحث شد، محدودیت خاص خودش رو هم داره (مثلا ابتدای کلمه باید مشخص باشه برای جستجو) ولی خواص جالب توجهی در کل ارائه میده.

  16. #16
    دوست عزیز ممکنه چون من از sql_server 2000 استفاده می کنم این مورد جزو تفاوت های 2000و 2005 باشه
    منی که نام شراب از کتاب می شستم
    زمانه کاتب دکان می فروشم کرد.

  17. #17
    نقل قول نوشته شده توسط sarami
    دوست عزیز ممکنه چون من از sql_server 2000 استفاده می کنم این مورد جزو تفاوت های 2000و 2005 باشه
    در مورد FTS روی 2005 من هنوز فرصت مطالعه نداشتم. مطالبی که عرض شد روی 2000 هستش.

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

  1. استفاده از full text search
    نوشته شده توسط Erfanian در بخش SQL Server
    پاسخ: 2
    آخرین پست: پنج شنبه 18 بهمن 1386, 07:28 صبح
  2. Full-Text SEARCH چیست؟
    نوشته شده توسط ali_abbasi22145 در بخش SQL Server
    پاسخ: 4
    آخرین پست: چهارشنبه 22 فروردین 1386, 10:16 صبح
  3. خطا در فعال کردن Full-Text SEARCH
    نوشته شده توسط PrinceDotNet در بخش SQL Server
    پاسخ: 7
    آخرین پست: یک شنبه 19 فروردین 1386, 08:30 صبح
  4. استفاده از Full-text search
    نوشته شده توسط zizisol در بخش SQL Server
    پاسخ: 1
    آخرین پست: یک شنبه 05 آذر 1385, 23:15 عصر
  5. توضیحاتی در موردFull Text Search
    نوشته شده توسط Developer Programmer در بخش SQL Server
    پاسخ: 4
    آخرین پست: شنبه 13 اسفند 1384, 08:40 صبح

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

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