50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

بررسی رشته ورودی با مقدار مشابه ذخیره شده در دیتابیس در زبان PHP

سلام . وقت دوستان بخیر

من یک جدول دارم با حدود 5000 رکورد سوال و بهش هر روز سوالات جدیدی اضافه می کنم.

(پایگاه داده MYSQL هست و زبان برنامه هم PHP)
گاهی پیش میاد که سوال تکراری وارد میشه
این سوال تکراری دو حالت داره : رشته ورودی کاملا با رشته ذخیره شده یک سان هست / رشته ورودی با رشته ذخیره شده تشابه دارد.

الان میام رشته ای که به عنوان سوال وارد میشه رو به روش زیر بررسی می کنم :
اول کل جدول رو Select میزنم بعد میام داخل حلقه زیر اطلاعات رو بررسی می کنم:

 

 

<?php
$New_Q = "متن سوال جدید";
$Q_Selects = array();  // آرایه سوالات موجود در جدول 

foreach ($Q_Selects as $Q_Select){
    similar_text(mb_strtolower($Q_Select['Question'],"utf-8"),mb_strtolower($New_Q,"utf-8"),$output);
    if($output > 70){
        echo "سوال مشابه یافت شد.";
        echo "<br>".$Q_Select['Question'];
    }
}

 

کارم رو راه می ندازه اما حجم داده ها که داره میره بالا با توجه به طولانی بودن متن سوالات فرایند پاسخ گرفتن من خیلی زمان می بره

دوستان راهکار بهتری سراغ دارن ؟

پرسیده شده در 1398/11/02 توسط

2 پاسخ

1

سلام به شما دوست عزیز.

برای این که سرعت شما افت نداشته باشه می تونید یک ایندکس full-text روی ستون سوال قرار بدید که وقتی که سرچ می کنید کار بسیار سریع تر خواهد بود. این ایندکس در مورد جستجوی رشته ها و مقایسه رشته ها به کار می رود. مطالعه بیشتر در این لینک.

پاسخ در 1398/11/05 توسط
0

ممنون جناب عادلی عزیز اما بحث من اینجا هست که بع علت بررسی مقادیر داده سمت کد php ناچار هستم کل جدول سوال رو Select بزنم. و در این صورت ایندکس بودن یا نبودنش فرقی برام فکر نمی کنم داشته باشه.

در حال حاضر من بیشتر نگران زمان پردازش اطلاعات در سمت اجرای دستور PHP هستم.

پاسخ در 1398/11/05 توسط

پاسخ شما