/
  • نحوه نوشتن سیستم جستجو

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی نحوه نوشتن سیستم جستجو
    نویسنده پیام
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #1
    نحوه نوشتن سیستم جستجو
    سلام دوستان،

    برای یک سیستم چطور میشه یک جستجو قوی نوشت؟ اگه هم بشه یک جستجو ساده و پیشرفته نوشت چه بهتر!

    مرسی Heart
    ۱۳۸۸ خرداد ۳ ۱۲:۰۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #2
    RE: نحوه نوشتن سیستم جستجو
    با Full text search engine ماله mysql که البته فعلا در این مورد ضعیف عمل کرده. البته الگوریتم‌های جستجویی هم وجود داره
    سیستم های بازمتن جستجویی مثل Lucene هم وجود دارن که بر اساس فایل کار می کنن
    ۱۳۸۸ خرداد ۳ ۱۲:۲۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #3
    RE: نحوه نوشتن سیستم جستجو
    یک اسکریپت جستجو خوب سراغ ندارید؟
    ۱۳۸۸ خرداد ۴ ۱۰:۳۵ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Maya آفلاین
    مرتضی فتحی
    ***

    ارسال‌ها: 111
    تاریخ عضویت: ۱۳۸۷ اسفند ۱۷
    اعتبار: 4
    تشکرها : 370
    ( 245 تشکر در 93 ارسال )
    ارسال: #4
    RE: نحوه نوشتن سیستم جستجو
    علیرضا جان اگه شی گرا کار میکنی این دو کلاس نسبتا خوب هستند:

    کد PHP:
    <?
    #############################################################
    class MysqlSearch
    {
        function find($keywords)
        {
            # Create a keywords array
            $keywords_array = explode(" ",$keywords);

            # Select data query
            if(!$this->searchcolumns)
            {
                $this->searchcolumns = "*";
                $search_data_sql = "SELECT ".$this->searchcolumns." FROM ".$this->table;
            }
            else
            {
                $search_data_sql = "SELECT ".$this->entry_identifier.",".$this->searchcolumns." FROM ".$this->table;
            }

            # Run query, assigning ref
            $search_data_ref = mysql_query($search_data_sql);

            # Define $search_results_array, ready for population
            # with refined results
            $search_results_array = array();

            if($search_data_ref)
            {
                while($all_data_array = mysql_fetch_array($search_data_ref))
                {
                    # Get an entry indentifier
                    $my_ident = $all_data_array[$this->entry_identifier];

                    # Cycle each value in the product entry
                    foreach($all_data_array as $entry_key=>$entry_value)
                    {
                        # Cycle each keyword in the keywords_array
                        foreach($keywords_array as $keyword)
                        {
                            # If the keyword exists...
                            if($keyword)
                            {
                                # Check if the entry_value contains the keyword
        
                                if(stristr($entry_value,$keyword))
                                {
                                    # If it does, increment the keywords_found_[keyword] array value
                                    # This array can also be used for relevence results
                                    $keywords_found_array[$keyword]++;
                                }
                            }
                            else
                            {
                                # This is a fix for when a user enters a keyword with a space
                                # after it.  The trailing space will cause a NULL value to
                                # be entered into the array and will not be found.  If there
                                # is a NULL value, we increment the keywords_found value anyway.
                                $keywords_found_array[$keyword]++;
                            }
                            unset($keyword);
                        }
        
                        # Now we compare the value of $keywords_found against
                        # the number of elements in the keywords array.
                        # If the values do not match, then the entry does not
                        # contain all keywords so do not show it.
                        if(sizeof($keywords_found_array) == sizeof($keywords_array))
                        {
                            # If the entry contains the keywords, push the identifier onto an
                            # results array, then break out of the loop.  We're not searching for relevence,
                            # only the existence of the keywords, therefore we no longer need to continue searching
                            array_push($search_results_array,"$my_ident");
                            break;
                        }
                    }
                    unset($keywords_found_array);
                    unset($entry_key);
                    unset($entry_value);
                }
            }

            $this->numresults = sizeof($search_results_array);
            # Return the results array
            return $search_results_array;
        }
        
        function setidentifier($entry_identifier)
        {
            # Set the db entry identifier
            # This is the column that the user wants returned in
            # their results array.  Generally this should be the
            # primary key of the table.
            $this->entry_identifier = $entry_identifier;
        }

        function settable($table)
        {
            # Set which table we are searching
            $this->table = $table;
        }
        
        function setsearchcolumns($columns)
        {
            $this->searchcolumns = $columns;
        }
    }

    ?>

    اینم دومی که کاملتره:
    دانلود
    __________________________________________________________________________
    در بين تمامي مردم تنها عقل است كه به عدالت تقسيم شده زيرا همه فكر مي‌كنند به اندازه كافي عاقلند!!!
    (آخرین ویرایش در این ارسال: ۱۳۸۸ خرداد ۵ ۱۲:۱۰ صبح، توسط Maya.)
    ۱۳۸۸ خرداد ۴ ۰۲:۳۰ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : cyletech
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #5
    RE: نحوه نوشتن سیستم جستجو
    ممنونم مرتضی جون. ولی من با اینکه یکبار آموزش کامل php رو تموم کردم، دوباره دارم شروع می کنم و مرور می کنم. (این کتاب الکترونیکی حدود 190 صفحه هست!) - راستش خسته شدم و دوست دارم خودم بنویسم و از اینکه از کدهای آماده استفاده کنم بدم میاد. ولی انگار باید تابع های جستجو رو یاد بگیرم.
    جایی سراغ ندارید که تمام توابع جستجو و کلمات کلیدی رو با توضیحشون داده باشه؟
    ۱۳۸۸ خرداد ۵ ۱۰:۰۷ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS