рдХреЛрд╣рдирд╛ рдкрд░ рдПрдХ рд░реВрдкрд╛рддреНрдордХ рдЦреЛрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ (phpMorphy рдкреБрд╕реНрддрдХрд╛рд▓рдп)

рд╢реБрдн рджрд┐рди, рд╣реЗрдмреНрд░реЛрд╕реЛрд╕рд┐рдЯреА!
рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВрдиреЗ рдХреЛрд╣рдирд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рд▓рд┐рдЦреА рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдПрдХ рд░реВрдкрд╛рддреНрдордХ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИ (LIKE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ)ред рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрд╣рдирд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдЦреЛрдЬ рдЕрд╕рдлрд▓ рд░рд╣реА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд┐рд▓рд╛: phpMorphy , рдЬреЛ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдерд╛ред

рдЦреЛрдЬ рдХреЗ рддрд░реНрдХ рдореЗрдВ 2 рдмреНрд▓реЙрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рд╕рд╛рдордЧреНрд░реА рдЕрдиреБрдХреНрд░рдордг
рд╕рд╛рдЗрдЯ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИ:

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдВрд▓рдЧреНрди рдЖрд░реЗрдЦ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рдЗрдЯ рдореЗрдВ 2 рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ:

рд╣рдо рдЗрд╕ рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкреВрд░реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреА рд╣реИрдВ - рдЖрдкрдХреЛ рдирд┐рд░рдВрддрд░ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рддрд░реНрдХ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ, рдЕрдиреБрдХреНрд░рдордг рд╕рд╛рдордЧреНрд░реА рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рдмрджрд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдорд┐рд▓рддреА рд╣реИ, рд╣рдо рд╕рд╛рдордЧреНрд░реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА (рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ, рд╕рд╛рдордЧреНрд░реА, рдЦрд╛рдирд╛ рдкрдХрд╛рдиреЗ рдХреЗ рдЪрд░рдг) рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ:


рдЗрдВрдбреЗрдХреНрд╕ рд╕рд░реНрдЪ рдХрд░реЗрдВ
рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЪреАрдЬ рдмрдиреА рд╣реБрдИ рд╣реИ - рдирд┐рд░реНрдорд┐рдд рдЦреЛрдЬ рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░ рдПрдХ рдЦреЛрдЬред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:

рдкреНрд░рд╢реНрди рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рдШрдЯрдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж - рдЖрдк рдХреЛрдб рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛

рд╢реБрд░реБрдЖрдд
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЛрд░реНрд╕рдлреЛрд░реНрдЬ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рд╕рд╛рде рд╣реА рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ (рдХреНрдпреЛрдВрдХрд┐ рдХреЛрд╣рдирд╛ utf-8 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдЗрд╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ)ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рд╡реЗрдм рд╕реЗ рд╕реАрдзреЗ рд╕реБрд▓рдн рди рд╣реЛрдВред рдореИрдВрдиреЗ рдХрд┐рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рди рдХрд░реЗрдВ рдФрд░ / www рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдКрдкрд░ рдпрд╛ рддреЛ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдпрд╛ (рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ / www рдХреЗ рдЕрдВрджрд░ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ) рд╡реЗрдм рд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рдпрд╣ .htaccess рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
Options -Indexes <Files ~ "\.(php|php3|php4|php5|pl|cgi|sh|bash)$"> Deny from all </Files> 


рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рдПрдЧреА:
 require_once('{    }/src/common.php'); $dir = '{  ,     }/dicts'; $lang = 'ru_RU'; $opts = array( 'storage' => PHPMORPHY_STORAGE_FILE, ); try { $morphy = new phpMorphy($dir, $lang, $opts); } catch(phpMorphy_Exception $e) { die('Error occured while creating phpMorphy instance: ' . $e->getMessage()); } 


рдХреЛрд╣рдирд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдПрдХреАрдХрд░рдг
рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдореЗрдВ, 2 рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП (рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ) рдЖрдкрдХреЛ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 class Model_Searchindex extends ORM { protected $_table_name = 'searchindex'; } 

рдареАрдХ рд╣реИ, рддрджрдиреБрд╕рд╛рд░, рддрд╛рд▓рд┐рдХрд╛ 'рдЦреЛрдЬ', рдЦреЗрддреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░:

рддрд╛рд▓рд┐рдХрд╛ MyISAM рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рдЕрдиреБрдХреНрд░рдордг рдирд┐рдпрдВрддреНрд░рдХ
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд╛рдЗрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдирд┐рдпрдВрддреНрд░рдХ рдХреЗрд╡рд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ)ред
рд╣рдо рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдСрдкрд░реЗрд╢рди рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛):
 Route::set('index', 'updateindex(/<offset>)') ->defaults(array( 'directory' => 'admin', 'controller' => 'updateindex', 'action' => 'index', )); 

рдЦреИрд░, рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рд╕рдордЭ рдЧрдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдорддрд▓рдм рдерд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж, рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╣реА, action_index () рдореЗрдВ рд╣рдо рдСрдлрд╕реЗрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, phpMorphy рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рддрд░реНрдХ рдЖрд░реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ:
  $offset = $this->request->param('offset'); //       if ($offset == 1) { $index = DB::query(Database::DELETE, 'DELETE FROM `searchindex`'); $index->execute(); } $data = array(); //     $posts = ORM::factory('post')->where('delete', '=', 0)->offset(100*$offset)->limit(100)->find_all(); foreach ($posts as $post) { $words = array(); //   html,          $title = mb_strtoupper(str_ireplace("", "", strip_tags($post->title)), "UTF-8"); $comments = ORM::factory('comment')->where('post_id', '=', $post->id)->order_by('id', 'ASC')->find_all(); //  ,    $text = $post->text; if ($post->type == 1) { //    ,      . ,     ... } foreach ($comments as $comment) { //    ,         $text = $text.' '.$comment->text; } $text = mb_strtoupper (str_ireplace("", "", strip_tags($text)), "UTF-8"); preg_match_all ('/([a-z-]+)/ui', $title, $word_title); //     preg_match_all ('/([a-z-]+)/ui', $text, $word_text); //    ,   =>  $start_form_title = $morphy->lemmatize($word_title[1]); $start_form_text = $morphy->lemmatize($word_text[1]); foreach ($start_form_title as $k=>$w) { if (!$w) { //       ,    $w[0] = $k; } if (mb_strlen($w[0], "UTF-8") > 2) //   ,     { if (! isset ( $words[$w[0]]))$words[$w[0]] = 0; $words[$w[0]]+= 3; //     } } foreach ($start_form_text as $k=>$w) { //     } //          foreach ($words as $word=>$weight) { $data['post_id'] = $post->id; $data['word'] = $word; $data['weight'] = $weight; $addindex = ORM::factory('searchindex'); $addindex->values($data); try { $addindex->save(); } catch (ORM_Validation_Exception $e) { $errors = $e->errors('validation'); } } } /*      json,       ,      */ $pcount = ORM::factory('post')->where('delete', '=', 0)->count_all(); if (($pcount - (100*$offset)) > 0) { $complateu = ($offset) * 100; $percent = ($complateu / $pcount) * 100; $percent = round($percent, 0); $json = array('status'=>'next', 'nextid'=>1+$offset, 'percent'=>$percent); $this->response->body(json_encode($json)); } else { $json = array('status'=>'finish', 'percent'=>100); $this->response->body(json_encode($json)); } 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рджреЗрдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ (рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд▓реЗрдЦ рдЕрднреА рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИ)ред рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ - рдПрдХ рдмрдЯрди, рдФрд░ рдПрдХ jquery рд╣реИрдВрдбрд▓рд░ рдЬреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдирд┐рдпрдВрддреНрд░рдХ рд╕рд╛рдЗрдЯ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ
рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдЙрд╕реА рддрд░рд╣, рдПрдХ рдорд╛рд░реНрдЧ рдмрдирд╛рдПрдВред рдирд┐рдпрдВрддреНрд░рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЦреЛрдЬ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╡рд╛рдХреНрдпрд╛рдВрд╢ GET рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
  public function action_search() { $data = null; $request = null; $errors = null; if (!empty($_GET['text'])) //    { //   html-   $search = $this->_clear_var($_GET['text']); $request = $search; } /*   phpMorphy */ if (!empty($search)) { //        if (mb_strlen($search, "UTF-8") > 2) { preg_match_all('/([a-z-]+)/ui', mb_strtoupper($search, "UTF-8"), $search_words); $words = $morphy->lemmatize($search_words[1]); $s_words = array(); $pre_result = array(); foreach ($words as $k => $w) { if (!$w)$w[0] = $k; if (mb_strlen($w[0], "UTF-8") > 2) { $s_words[] = $w[0]; } } if (!count($s_words)) { //   (     2 ) } else { foreach($s_words as $s_word) { $search_index = ORM::factory('searchindex')->where('word', '=', $s_word)->find_all(); foreach ($search_index as $si) { if (!empty($pre_result[$si->post_id])) { $pre_result[$si->post_id] = (int) $si->weight + $pre_result[$si->post_id]; } else { $pre_result[$si->post_id] = (int) $si->weight; } } } arsort($pre_result); //      foreach ($pre_result as $id => $weight) { // , ,         $data[] = $result; } } } else { //   -     } } else { //   -    } $this->template->content = View::factory('content/v_search') ->bind('data', $data) ->bind('errors', $errors) ->bind('request', $request) } 

рдЦреИрд░, рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ - рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╣реИред рдореИрдВрдиреЗ рдХреЛрдб рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рддрд╛рдХрд┐ рд▓реЗрдЦ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рдХреЗрд▓реЗ рд╡рд╛рд▓реА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд░реЗрдВ (рдЬреИрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдпрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ, рд╣рд░ рдХреЛрдИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ ...)ред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд▓реЗрдЦ Habrasociety рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕ рдЦреЛрдЬ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In165715/


All Articles