PDA

View Full Version : جستجو ترکیبی چند فیلد در full text search



spicirmkh
پنج شنبه 10 اردیبهشت 1394, 12:28 عصر
سلام

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


شامل 3 تا ستون

نام کتاب
نویسنده
سال کتاب

حال می خواهم توی جستجو تایپ کنم ( sql server sobati 1370 )

یعنی این کلید واژه توی هر رکورد بود نمایش بده



WHERE contains((NAME +' '+ Author+' '+ YEAR) , '"sql" and "server" and "sobati" and "1370"')






یک دستور می خواهم مشابه دستور بالا

با تشکر

مهدی نان شکری
پنج شنبه 10 اردیبهشت 1394, 19:29 عصر
با سلام
ببینید شما فقط می توانید با OR این کار رو انجام دهید البته زیاد دقیق نخواهد بود.


select * from book where contains(Title,'SQL or sobati') and contains(author,'SQL or sobati')

spicirmkh
یک شنبه 13 اردیبهشت 1394, 08:24 صبح
با سلام
ببینید شما فقط می توانید با OR این کار رو انجام دهید البته زیاد دقیق نخواهد بود.


select * from book where contains(Title,'SQL or sobati') and contains(author,'SQL or sobati')


متاسفاته این جستجو دقیق نیست و رکوردهای زیادی پیدا می کند

شما خودت توی گوگل جستجو میکنی چند تا کلید واژه میزنی ترکیب and میکند اگر به or باشه بیش از حد پیدا میکنه

مهدی نان شکری
دوشنبه 14 اردیبهشت 1394, 13:46 عصر
با سلام
معمولا جستجو های Fulltext دقت 100 درصدی ندارند به همین دلیل تابع FreeTextTable فیلد RANK را تولید می نماید تا به وسیله آن میزان انطباق نتیجه با کوئری بررسی شود.
در روش استفاده از OR شما تنها زمانی انحراف خواهید داشت که مثلا کتابی با نام Sobati داشته باشید و شما دنبال کتابی با عنوان MS SQL نوشته Sobati بوده اید. در این شرایط کتاب sobati با نوشته sobati هم نمایش داده خواهد شد که تقریبا احتمال آن ناچیز است.

برای جتتجوی دقیق شما از like استفاده کنید.

spicirmkh
دوشنبه 14 اردیبهشت 1394, 17:47 عصر
با سلام

ببنید من یک textbox توی برنامه ام دارم داخل ان تایپ میکنم 2014 sobati ms sql

میخواهم توی sql بدون اینکه بدون این پارامترها مربوط به سال یا نوسینده یا عنوان کتاب است جستجو کند

ذستور داریم با Like که به اینصورت است

where (Title+year+author) like 'sobati' and '2014' and 'MS' AND 'Sql'

یعنی 3 تا ستون جمه میکنه یکی میکنه و جستجو روش انجام میشه

اما من با fulltext search mikham