سلام خدمت همگی
یک موضوعی که توی اکثر برنامه ها حتی برنامه های بزرگ دولتی هم دیدم هست مسیله جستجو یک مقدار هستش که اگر اون مقدر جستجو شما با اطلاعات یکی نباشه نمیاره
منظورم اینه که بخشی از کلمه حتما باید درست وارد شده باشه به عنوان مثال : میخوایم مقدار "ملک" رو در یک دیتابیس جستجو کنیم میره کلماتی که توش ملک هست رو میاره
مثل این کویری :
Select * From MyTable Where Name Like N'%ملک%'
اما اگر به جای ملک تایپ کنیم "مکل" دیگه اینو نمیاره در حالی که توی سرچ گوگل اگر همینو تایپ کنم به این شکل میاره :
حالا میخوایم همین کار گوگل رو ما با سی شارپ توی SQL Server انجام بدیم , با جستجویی که توی اینترنت کردم گزینه Full Text Search برخوردم ولی به جایی نرسیدم چون خود کویری های این این مضوضعی رو که من میخواستم نداشت
من میخوام سرچ رو هوشمندانه انجام بده یعنی اگر به جای "ملک" که توی سیستم ثبت شده تایپ کردم "مکل" اون , هم دنبال کلمه : "مکل" و هم دنبال "ملک" بگرده به عبارتی بیاد کلمه من تیکه تیکه کنه و ببینه کدوم کاراکتر هاش به اطلاعات توی سیستم نزدیکه تره و ایندفعه برای من نتایج رو بیاره
چطور میتونم این مسیله ای رو که مطح کردم توی برنامه های سی شارپ با SQL Server با سرعت بالا حل کنم ؟
باتشکر از وقتی که برای این موضوع میذارید ♥
گوگل کلا از هوش مصنوعی استفاده میکنه و انتظار نداشته باشین که در حد و اندازه گوگل کار بکنین. گوگل یک شرکت هست و ما هر کدام یک نفر و طبیعتا انتظار شما یکم زیاده. هوش مصنوعی گوگل طوری طراحی شده که هر اتفاقی که توسط کاربران می افته رو یاد میگیره و در زمانهای بعدی ازشون استفاده میکنه. واسه همین شما هر مطلبی رو سرچ میکنین یه سری پیشنهاداتی رو براتون میده.
ولی اگه بخوایین خیلی ساده این کار رو انجام بدین میتونین خودتون این غلط های املائی رو پیش بینی کنین و در سیستم ذخیره کنین تا وقتی کاربری بخواد مکل رو سرچ بکنه عنوان ملک رو با مکل جایگزین بکنه و به کوئری ارسال بکنه.
ببینید برای انجام چنین کاری علاوه بر اینکه نیاز به هوش مصنوعی هست مطمئنا نیاز به یک دیتابیس از اطلاعات جستجو شده کاربران برای کلمات مشابه هم هست. به عنوان مثال همین لغتی که خودتون مثال زدید "مکل" هیچ ارتباطی از لحاظ معنایی با لغت "ملک" نداره ولی گوگل تشخیص داده که احتمالا شما "ملک" مد نظرتون بوده. در حالی که ممکنه "کلم" هم مد نظر باشه. بنابراین این گونه تحلیل ها رو ما نمیتونیم به این راحتی در جست و جو ها پیاده سازی کنیم.
یه نمونه سرچ که روی لغت به لغت کلمات میشه اعمال کرد و نتایج بهتر و نزدیک تری رو اعمال کرد به این صورت هست.
var result = from a in _db.Customer.Where(q => arr.Any(term => q.CustomerName.ToLower().Contains(term.ToLower()))
دستور بالا توی انتیتی فریم ورک نوشته شده. شیوه کار اینجوری هست که اگر شما یک عبارت رو بهش بدید مثلا "سیاره زمین" تمامی حالات مثل "سیاره" و "زمین" و "سیاره زمین" و حتی "زمینی"، "سیاره ها" و ... رو جستجو میکنه و در نتایج نمایش میده. اما نتایج معنایی رو نمیتونه بیاره.
باتشکر از لطف مهندسان عزیز
ببینید کتابخانه Irony برای این کار هستش حالا نمیدونم فارسی رو هم ساپورت میکنه یا نه ؟!
https://github.com/IronyProject/Irony
این لینک ها رو یه نگاهی بندازین :
Full-Text Search functions don't search like Google
https://www.codeproject.com/Articles/104299/Very-Powerful-Generic-Irony-Based-Database-Searche
به اصطلاح میگن sql server full text search fuzzy matching
سلام
شما باید از NOSQL استفاده کنید و با اون نرم افزارتون را بنویسید.
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2008
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
349
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
318
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4268
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4282
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3875
- پاسخ :
5
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
661
- پاسخ :
0
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2008
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
75
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|