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

نام تاپیک: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

  1. #1
    کاربر جدید آواتار Mehdi Tahmasebi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    همین نزدیکی ها
    پست
    9

    تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    سلام دوستان

    من یه لیست از کلمات کلیدی دارم که در یک جدول در بانک اطلاعاتی ذخیره شده است. حالا می خوام هر وقت که درخواستی (پیام متنی) از طرف کابر دریافت کردم در لیست کلمات کلیدی جستجو کنم و ببینم که کاربر از کدام کلمات کلیدی استفاده کرده و درخواست کاربر را متوجه بشم
    توجه کنید که کابر در هر درخواست از چند کلمه کلیدی استفاده می کند و ممکن است در درخواست کاربر از کلمات اضافی هم استفاده شده باشد
    این برنامه را می توان با استفاده از کرسر ها نوشت اما من می خوام بدونم آیا روش ساده تری با استفاده از چند دستور select ساده و like و in معمولی وجود داره یا نه؟
    ضمنا اگه دوستان حرفه ای سایت روش های مناسب تری با استفاده از درخت ها ، لیست های پیوندی و ... سراغ دارند لطفا راهنمایی کنن!

    با تشکر از دوستان زحمت کش...

  2. #2

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    منظورتون رو واضح تر بیان کنید و مثال بزنید.
    به نظر می رسه که سمت UI بشه بهتر کنترل کرد تا SQL.
    به هر حال بگید که برای چه کاری می خواهید؟
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  3. #3
    کاربر دائمی آواتار Galawij
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    شاره که م سنه
    پست
    711

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    سلام،
    شما سعی کنید در رشته ای که کاربر می فرسته یک کاراکتر جدا کننده بذارید مثل: ','، ';'،'.'، و ....
    بعد از طریق توابع SQL(اگر تعداد حروف کم هست:PARSENAME، و یا ترکیبی از Substring و Charindex) تک تک این کلمه ها را بدست بیارید و با کلمات کلیدی داخل جدول (فکر کنم با Case ....when ... then بشه) مقایسه کنید.

  4. #4

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    دوست من ببینید ممکنه بخواهید در شرط where استفاده کنید، در این صورت اصلا نیازی به parse کردن ندارید. ممکنه بخواهید در join استفاده کنید، قضیه فرق می کنه.
    مثال زیر رو ببینید:

    declare @X varchar(max) = '''hello'', ''test'', ''hi'', ''word4''' -- sql
    declare @Qry varchar(max) = 'select * from TBL where Field in ( ' + @X + ')' -- where test
    exec(@Qry) -- result

    اگر توضیح بدید بهتر می شه کمک کرد.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  5. #5
    کاربر جدید آواتار Mehdi Tahmasebi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    همین نزدیکی ها
    پست
    9

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    با تشکر از You-See و Galawij عزیز به خاطر توجه تون:

    گفتین واضح تر بگم.
    من می خوام یه سیستم ارسال و دریافت sms درست کنم. استفاده کننده های سیستم برای دریافت بعضی سرویس های ارائه شده می تونن ثبت نام کنند. ثبت نام با ارسال چند کلمه کلیدی باید صورت بگیره. مثلا یک سرویس داریم که کاربر برای ثبت نام در اون باید 1- نام سرویس 2-نام استان 3-نام شهر خودشو ارسال کنه ؛ نام سرویس ها ، استان ها و شهرها و سایر کلمات کلیدی مورد نیاز در جداولی در بانک اطلاعاتی ذخیره شده (مثلا در جدولی بنام ServiceList در فیلد اول نام سرویس ، در فیلد دوم نام استان ، در فیلد سوم نام شهر و... ذخیره شده )
    حالا هر وقت پیامی از سوی کاربران دریافت شد باید بررسی بشه که کدوم کلمات کلیدی در متن پیام اومده با فهمیدن اون ها قسمت عمده کار انجام شده
    من دنبال یه روش ساده و کارآمد هستم...
    مثلا میشه از کرسرها استفاده کرد و با خوندن رکورد به رکورد جدول کلمات کلیدی و جستجوی اون ها در متن دریافتی، کلمات کلیدی استفاده شده رو استخراج کرده و تصمیم گیری نمود.
    شاید هم بشه از دستور select , like , in ,any و... استفاده کرد اما یه مشکلاتی هست...

    نظر شما چیه؟ بهترین روش کدومه؟

  6. #6
    کاربر جدید آواتار Mehdi Tahmasebi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    همین نزدیکی ها
    پست
    9

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    ببینید من می تونم از یه دستور select استفاده کنم

    پیام دریافتی از کاربر، توی یه فیلد بنام message در جدولی به نام RecieveMSG قرار داره
    serviceName , Province , City
    هم مثلا کلمات کلیدی ما هستن (عنوان فیلدها)
    SRVkey
    هم جدول کلمات کلیدی هستش
    SELECT serviceName , Province , City FROM SRVkey
    WHERE …….
    حالا مسئله اینه که where رو چطور بنویسم؟

  7. #7
    کاربر جدید آواتار Mehdi Tahmasebi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    همین نزدیکی ها
    پست
    9

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    نقل قول نوشته شده توسط Galawij مشاهده تاپیک
    سلام،
    شما سعی کنید در رشته ای که کاربر می فرسته یک کاراکتر جدا کننده بذارید مثل: ','، ';'،'.'، و ....
    بعد از طریق توابع SQL(اگر تعداد حروف کم هست:PARSENAME، و یا ترکیبی از Substring و Charindex) تک تک این کلمه ها را بدست بیارید و با کلمات کلیدی داخل جدول (فکر کنم با Case ....when ... then بشه) مقایسه کنید.
    یکی از مشکلات اساسی اینه که توابع قدرتمندی برای جستجوی یک رشته در رشته دیگر در sql وجود نداره مثلا اگه میشد یک سری کلمات (ذخیره شده در یک جدول بانک) رو به راحتی در یک متن جستجو می کرد خیلی راحت مسئله حل می شد البته مانورهای زیادی روی ترکیب تابع Charindex همراه با دستور select داد اما من زیاد با ترکیب اینها کار نکردم . ریزه کار هم زیاد داره!!!

    ممنون....

  8. #8
    کاربر دائمی آواتار Galawij
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    شاره که م سنه
    پست
    711

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    خیلی مشکلات در رابطه با SQL پیش میاد که در حین کار واقعاً آدم متوجه می شه.
    فرض کنیم شما مقادیر ورودی کاربر را در سه متغیر جداگانه داشته باشید، برای این قسمت می تونید این لینک را ببینید.
    پیام دریافتی از کاربر، توی یه فیلد بنام message در جدولی به نام RecieveMSG قرار داره
    serviceName , Province , City
    هم مثلا کلمات کلیدی ما هستن (عنوان فیلدها)
    SRVkey
    هم جدول کلمات کلیدی هستش
    SELECT serviceName , Province , City FROM SRVkey
    WHERE …….
    حالا مسئله اینه که where رو چطور بنویسم؟
    من فکر می کنم اصلاً Where نمی خواد، یک کمی هم روی case کار کنید. مثلاً:
    with CTE AS (
    select case when str like '%string%' then str end as city,case when id=3 then 'id' end as id from dbo.strings)
    select city,id from CTE where city is not null or id is not null

    برای ارسال متغیرها هم از sql پویا استفاده کنید.

  9. #9

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    سلام

    خوب همونطوری که دوستان گفتن ... و از نظر من انجام اینکار در SQL کار درستی نیست ... هم زمان طراحی هم زمان اجرا و هم در آینده در هنگام توسعه به مشکلات زیادی بر خواهید خورد ... کار درست اینه که در لایه APP این کارو انجام بدید ... ابزارها در لایه APP هم سریعتر هستند هم قویتر ... ضمن اینکه شما می تونید پارسر خودتون رو اونجا به عنوان یه ابزار ایجاد کنید ... و ارتقاعش بدید ... و در آخر هم اینکه SQL در کار با رشته ها نسبت به زبانهای برنامه نویسی خیلی کنده ...

  10. #10
    کاربر جدید آواتار Mehdi Tahmasebi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    همین نزدیکی ها
    پست
    9

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    نقل قول نوشته شده توسط baktash.n81@gmail.com مشاهده تاپیک
    سلام

    خوب همونطوری که دوستان گفتن ... و از نظر من انجام اینکار در SQL کار درستی نیست ... هم زمان طراحی هم زمان اجرا و هم در آینده در هنگام توسعه به مشکلات زیادی بر خواهید خورد ... کار درست اینه که در لایه APP این کارو انجام بدید ... ابزارها در لایه APP هم سریعتر هستند هم قویتر ... ضمن اینکه شما می تونید پارسر خودتون رو اونجا به عنوان یه ابزار ایجاد کنید ... و ارتقاعش بدید ... و در آخر هم اینکه SQL در کار با رشته ها نسبت به زبانهای برنامه نویسی خیلی کنده ...

    میشه لطف کنید چند تا از ابزارهای سریع و قوی که در لایه APP سراغ دارین رو معرفی کنید؟ درکل شما چه الگوریتمی پیشنهاد می کنین؟
    تصور من این بوده که اگه پردازش درخواست هام رو به سمت sql ببرم باعث یکپارچگی و قدرت نرم افزارم میشه اما گویا اطلاعات شما میگه اینطور نیست. همچنین توابع درون ساخت قوی هم در sql برای کار با رشته ها وجود نداره و این باعث مشکل برای من شده!

  11. #11

    نقل قول: تشخیص درخواست کاربر با استفاده از کلمات کلیدی در sql

    البته این نکته رو اضافه کنم که می تونید از SQL CLR هم استفاده کنید یعنی توابع مورد نیاز رو در یه زبان برنامه نویسی به صورت dll ایجاد کنید بعد dll رو در TSql به عنووان Refrence معرفی کنید و از توابعش استفاده کنید.

    من یادمه دوران دانشجویی برای درس کامپایلر یه parser نوشتم .. کارکترها رو تک تک می خوند ... تا به یک جدا کننده برسه (جدا کننده قابل تعریف) بعد کلمه پیدا شده رو با کلماتی که به عنوان کلمات کلیدی تعریف شده بود مقایسه می کرد اگر جزو اونا بود ID اون کلمه رو استخراج می کرد ... البته دنبال الگو های خاص هم می گشت که ... شما هم الگوریتم خودتون رو بنویسید ...

    اما منظورم از ابزار قدرتمند و سریع ... کامپایلرهای بهتر ... و توابع موجود در زبانهای مختلف برای کار با رشته ها است ... در نهایت هم نتیجه این ابزارها که یم APP خواهد بود خیلی سریعتر از SQL کار خواهد کرد.

    امید که کمکی شده باشه ...

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

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