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

نام تاپیک: نوشتن کوئری like؟

  1. #1
    کاربر دائمی آواتار sajadjamalian
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    252

    Question نوشتن کوئری like؟

    سلام دوستان:
    من میخوام یه دستور بنویسم که مثلا یک جمله رو بگیره و توی یه جدول دیتابیس دنبال تک تک کلمات و مشابهات کلمات اون جمله بگرده، کسی میتونه لطف کنه کوئریش رو برام بنویسه؟ ممنون.

  2. #2

    نقل قول: نوشتن کوئری like؟

    سلام دوست عزیزم،
    منظور شما از پیدا کردن مشابه چی هست؟ این کار میتونه بسیار پیچیده باشه، ولی شاید چیزی که در فکر من هست مد نظر شما نیست.

  3. #3
    کاربر دائمی آواتار sajadjamalian
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    252

    نقل قول: نوشتن کوئری like؟

    ممنون از توجهتون:
    منظورم رو با یک مثال براتون توضیح میدم:
    من توی برنامه یه textbox دارم که کاربر میتونه کلمه یا جمله ای رو توی اون وارد کنه، حالا فرض کنید که کاربر جمله "علی به بازار رفت" را درون textbox بنویسد، حالا میخوام توی یه جدولی که توی sql دارم توی یکی از column های اون هر 4تا کلمه این جمله جستجو بشه، مثلا اگه "علی" بود یا "رفت" بود هم توی نتیجه کوئری نشون داده بشه، باید چی کار کنم؟
    بازم ممنون.

  4. #4

    نقل قول: نوشتن کوئری like؟

    فكر نميكنم با يك دستور اين كار رو انجام داد.
    2 روش پيشنهادي براي حلش
    روش اول:
    دستور SQL رو توي APP با توجه به كلمات بسازيد و اجرا كنيد (چيزي شبيه كد زير)
    if (!String.IsNullOrEmpty(textBox1.Text.Trim()))
    {
    string sqlStr = "Select * From TableName Where ";
    foreach (string str in textBox1.Text.Split(new char[] { ' ' }))
    sqlStr += "FieldName like %" + str + "% AND ";
    sqlStr = sqlStr.Substring(0, sqlStr.Length - 4);
    MessageBox.Show(sqlStr);
    }

    اين روش براي حالتي كه تعداد ركوردها زياد نيست و اندازه متن هاي فيلدها هم زياد نيست مناسبه
    روش دوم:
    كاري شبيه عملكرد موتورهاي جستجو انجام بديد. يعني اينكه روي تمام كلمات ايندكس گذاري كنيد.
    براي اين كار بايد يك جدول ديگه داشته باشيد كه يك فيلدش كلمه ها ذخيره ميشه و توي فيلد ديگه idهاي متنها در جدول اصلي.
    به اينصورت كه زمان ذخيره متن به ازا تك تك كلمات كار زير رو انجام بديد:
    - توي جدول كمكي كلمه رو جستجو كنيد اگه وجود داشت id متن جديد رو به ليست idها اضافه كنيد اگر هم وجود نداشت به عنوان يك سطر جديد به جدول كمكي اضافه كنيد.
    زمان جستجو هم با جستجو روي جدول كمكي ميتونيد ليست idها رو بدست بياريد و از روي اين ليست متن ها رو پيدا كنيد‌(چون هر فيلد در جدول كمكي يك كلمه رو نشون ميده به راحتي ميتونيد با دستور in ليست رو تهيه كنيد)
    اين روش زمان ذخيره كردن متن جديد يك مقدار سربار داره ولي سرعت واكشي رو به مراتب زياد ميكنه(چون توي هر 2 جدول بر اساس فيلدي كه ايندكس گذاري شده است جسجتو ميكنيم)

  5. #5

    نقل قول: نوشتن کوئری like؟

    با رضا موافقم، تنها یک کوئری شما رو به هدف نمیرسونه. ولی از امکانات Indexing در Full Text Search هم غافل نشین چون کار رو آسان تر و سریعتر میکنه

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

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