{"id":894,"date":"2026-06-29T16:25:52","date_gmt":"2026-06-29T13:25:52","guid":{"rendered":"https:\/\/presta.site\/blog\/?p=894"},"modified":"2026-06-29T16:25:52","modified_gmt":"2026-06-29T13:25:52","slug":"utiliser-la-recherche-sphinx-dans-prestashop","status":"publish","type":"post","link":"https:\/\/presta.site\/blog\/fr\/utiliser-la-recherche-sphinx-dans-prestashop\/","title":{"rendered":"Utiliser la recherche Sphinx dans PrestaShop"},"content":{"rendered":"<p>PrestaShop a un bel outil de recherche, mais parfois il ne r\u00e9pond pas \u00e0 tous vos besoins. De plus, il n&#8217;est pas vraiment rapide et sur les grandes boutiques, la recherche et l&#8217;indexation peuvent \u00eatre tr\u00e8s lentes.<\/p>\n<p>Si vous voulez quelque chose de mieux, vous pouvez utiliser un excellent remplacement &#8211; Sphinx.<\/p>\n<p><!--more--><br \/>\nDe Wikipedia :<\/p>\n<blockquote><p>Sphinx est un moteur de recherche en texte int\u00e9gral (Fulltext) open source\/logiciel libre con\u00e7u pour fournir des fonctionnalit\u00e9s de recherche en texte int\u00e9gral aux applications clientes.<\/p><\/blockquote>\n<p>Site web de Sphinx &#8211; <a href=\"http:\/\/sphinxsearch.com\/\" target=\"_blank\" rel=\"nofollow noopener\">http:\/\/sphinxsearch.com\/<\/a><\/p>\n<h2>Installation de Sphinx<\/h2>\n<p>J&#8217;ai utilis\u00e9 Debian 8.1. Dans d&#8217;autres distributions Linux (et en particulier sous Windows), l&#8217;installation peut diff\u00e9rer l\u00e9g\u00e8rement.<br \/>\nSi Sphinx est disponible dans les d\u00e9p\u00f4ts, installez-le simplement :<\/p>\n<div class=\"codecolorer-container bash blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/><\/div><\/td><td><div class=\"bash codecolorer\"><span class=\"kw2\">su<\/span><br \/>\n<span class=\"kw2\">apt-get update<\/span><br \/>\n<span class=\"kw2\">apt-get install<\/span> sphinxsearch<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Si Sphinx n&#8217;est pas disponible dans les d\u00e9p\u00f4ts, vous pouvez t\u00e9l\u00e9charger un programme d&#8217;installation depuis le site officiel et installer les d\u00e9pendances :<\/p>\n<div class=\"codecolorer-container bash blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/><\/div><\/td><td><div class=\"bash codecolorer\"><span class=\"kw2\">apt-get install<\/span> mysql-client unixodbc libpq5<br \/>\n<span class=\"kw2\">wget<\/span> http:<span class=\"sy0\">\/\/<\/span>sphinxsearch.com<span class=\"sy0\">\/<\/span>files<span class=\"sy0\">\/<\/span>sphinxsearch_2.2.9-release-<span class=\"nu0\">1<\/span>~wheezy_i386.deb<br \/>\n<span class=\"kw2\">dpkg<\/span> <span class=\"re5\">-i<\/span> sphinxsearch_2.2.9-release-<span class=\"nu0\">1<\/span>~wheezy_i386.deb<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Vous devez remplacer le nom et l&#8217;URL du programme d&#8217;installation par les versions actuelles pertinentes. Elles sont toutes disponibles sur le site officiel.<\/p>\n<h2>Configuration de Sphinx<\/h2>\n<p>Ouvrez la configuration de Sphinx et modifiez-la :<\/p>\n<div class=\"codecolorer-container bash blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"bash codecolorer\"><span class=\"kw2\">nano<\/span> <span class=\"sy0\">\/<\/span>etc<span class=\"sy0\">\/<\/span>sphinxsearch<span class=\"sy0\">\/<\/span>sphinx.conf<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Vous devez modifier le bloc par d\u00e9faut existant &#8220;source src1&#8221; (ou ajouter un nouveau bloc). Le r\u00e9sultat devrait ressembler \u00e0 ceci :<\/p>\n<div class=\"codecolorer-container ini blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/><\/div><\/td><td><div class=\"ini codecolorer\">source PrestaSite<br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"re1\">type<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> mysql<\/span><br \/>\n<span class=\"re1\">sql_host<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> localhost<\/span><br \/>\n# PrestaShop database username<br \/>\n<span class=\"re1\">sql_user<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> DBUSER<\/span><br \/>\n# PrestaShop database password<br \/>\n<span class=\"re1\">sql_pass<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> DBPASSWORD<\/span><br \/>\n# PrestaShop database name<br \/>\n<span class=\"re1\">sql_db<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> DBNAME<\/span><br \/>\n<span class=\"re1\">sql_port<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> 3306 # optional, default is 3306<\/span><br \/>\n<span class=\"re1\">sql_query_pre<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> SET NAMES utf8<\/span><br \/>\n<br \/>\n# MySQL query with list of fields for indexation<br \/>\n<span class=\"re1\">sql_query<\/span> <span class=\"sy0\">=<\/span> <br \/>\nSELECT id_product, name, description, description_short<br \/>\nFROM ps_product_lang<br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Tout d&#8217;abord, vous pouvez voir les param\u00e8tres de connexion \u00e0 la base de donn\u00e9es (<span class=\"bold\">n&#8217;oubliez pas de les modifier en cons\u00e9quence<\/span>). Le param\u00e8tre <span class=\"bold\">sql_query<\/span> contient une requ\u00eate avec les champs \u00e0 indexer.<\/p>\n<p>Ce sont tous les param\u00e8tres de ma configuration. Fondamentalement, le fichier de configuration est bien document\u00e9 et toutes les options y sont d\u00e9crites, vous pouvez donc facilement personnaliser votre configuration.<\/p>\n<p>Ensuite, dans le bloc &#8220;index definition&#8221;, vous devez configurer l&#8217;index :<\/p>\n<div class=\"codecolorer-container ini blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/><\/div><\/td><td><div class=\"ini codecolorer\">index PrestaSite<br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n# data source for indexation<br \/>\n<span class=\"re1\">source<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> PrestaSite<\/span><br \/>\n<br \/>\n# location for index data<br \/>\n<span class=\"re1\">path<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> \/var\/lib\/sphinxsearch\/data\/prestasite<\/span><br \/>\n<br \/>\n# morphology preprocessors<br \/>\n<span class=\"re1\">morphology<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> stem_en<\/span><br \/>\n<br \/>\n# minimal word length for indexation<br \/>\n<span class=\"re1\">min_word_len<\/span> <span class=\"sy0\">=<\/span><span class=\"re2\"> 1<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Ensuite, vous pouvez voir les blocs &#8220;indexer settings&#8221; et &#8220;searchd settings&#8221;. Habituellement, ils sont corrects, vous pouvez simplement les ignorer.<\/p>\n<p><span class=\"bold\">Nous avons donc configur\u00e9 la source de donn\u00e9es (source PrestaSite) et l&#8217;index (index PrestaSite).<\/span><\/p>\n<h2>Indexation<\/h2>\n<p>Lancez l&#8217;indexeur pour indexer votre base de donn\u00e9es :<\/p>\n<div class=\"codecolorer-container bash blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"bash codecolorer\">indexer <span class=\"re5\">--all<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<h2>Lancement de Sphinx<\/h2>\n<p>N&#8217;oubliez pas de d\u00e9marrer\/red\u00e9marrer searchd :<\/p>\n<div class=\"codecolorer-container bash blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"bash codecolorer\">searchd<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Et d&#8217;ajouter l&#8217;indexeur \u00e0 la crontab :<\/p>\n<div class=\"codecolorer-container bash blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"bash codecolorer\"><span class=\"nu0\">15<\/span> <span class=\"sy0\">*<\/span> <span class=\"sy0\">*<\/span> <span class=\"sy0\">*<\/span> <span class=\"sy0\">*<\/span> root indexer <span class=\"re5\">--all<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>L&#8217;indexation sera lanc\u00e9e toutes les heures.<\/p>\n<h2>Configuration de PrestaShop<\/h2>\n<p>Ci-dessous, vous pouvez voir le code pour PrestaShop 1.6. Pour les autres versions de PrestaShop, cela peut diff\u00e9rer l\u00e9g\u00e8rement.<\/p>\n<p>Cr\u00e9ez (ou modifiez) la surcharge de la classe Search :<br \/>\n\/override\/classes\/Search.php<\/p>\n<div class=\"codecolorer-container php blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/><\/div><\/td><td><div class=\"php codecolorer\"><span class=\"kw2\">&lt;?php<\/span><br \/>\n<span class=\"kw2\">class<\/span> Search <span class=\"kw2\">extends<\/span> SearchCore <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw2\">public<\/span> static <span class=\"kw2\">function<\/span> find<span class=\"br0\">&#40;<\/span><span class=\"re0\">$id_lang<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$expr<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$page_number<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$page_size<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$order_by<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'position'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$order_way<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'desc'<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$ajax<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">false<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$use_cookie<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">true<\/span><span class=\"sy0\">,<\/span> Context <span class=\"re0\">$context<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">null<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><span class=\"re0\">$context<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$context<\/span> <span class=\"sy0\">=<\/span> Context<span class=\"sy0\">::<\/span><span class=\"me2\">getContext<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$db<\/span> <span class=\"sy0\">=<\/span> Db<span class=\"sy0\">::<\/span><span class=\"me2\">getInstance<\/span><span class=\"br0\">&#40;<\/span>_PS_USE_SQL_SLAVE_<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ TODO : smart page management<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$page_number<\/span> <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"re0\">$page_number<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$page_size<\/span> <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"re0\">$page_size<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span>Validate<span class=\"sy0\">::<\/span><span class=\"me2\">isOrderBy<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$order_by<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> <span class=\"sy0\">!<\/span>Validate<span class=\"sy0\">::<\/span><span class=\"me2\">isOrderWay<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$order_way<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"kw4\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span>Validate<span class=\"sy0\">::<\/span><span class=\"me2\">isOrderBy<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$order_by<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> <span class=\"sy0\">!<\/span>Validate<span class=\"sy0\">::<\/span><span class=\"me2\">isOrderWay<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$order_way<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"kw4\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$start<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$page_number<\/span> <span class=\"sy0\">-<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">*<\/span> <span class=\"re0\">$page_size<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Sphinx search, get ids of found products<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$sphinx_results<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">self<\/span><span class=\"sy0\">::<\/span><span class=\"me2\">getSphinxResults<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$expr<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$start<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$page_size<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$result<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">null<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$total<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ get products by id if something found<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/is_array\"><span class=\"kw3\">is_array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$sphinx_results<\/span><span class=\"br0\">&#41;<\/span> AND <a href=\"http:\/\/www.php.net\/sizeof\"><span class=\"kw3\">sizeof<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$sphinx_results<\/span><span class=\"br0\">&#41;<\/span> AND <a href=\"http:\/\/www.php.net\/isset\"><span class=\"kw3\">isset<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$sphinx_results<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'total'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span> AND <span class=\"re0\">$sphinx_results<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'total'<\/span><span class=\"br0\">&#93;<\/span> <span class=\"sy0\">&gt;<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$sql<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`name`,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` manufacturer_name, MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATEDIFF(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; p.`date_add`,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATE_SUB(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NOW(),<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INTERVAL '<\/span><span class=\"sy0\">.<\/span><span class=\"br0\">&#40;<\/span>Validate<span class=\"sy0\">::<\/span><span class=\"me2\">isUnsignedInt<\/span><span class=\"br0\">&#40;<\/span>Configuration<span class=\"sy0\">::<\/span><span class=\"me2\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'PS_NB_DAYS_NEW_PRODUCT'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> ? Configuration<span class=\"sy0\">::<\/span><span class=\"me2\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'PS_NB_DAYS_NEW_PRODUCT'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">:<\/span> <span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">' DAY<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ) &gt; 0 new<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FROM '<\/span><span class=\"sy0\">.<\/span>_DB_PREFIX_<span class=\"sy0\">.<\/span><span class=\"st_h\">'product p<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '<\/span><span class=\"sy0\">.<\/span>Shop<span class=\"sy0\">::<\/span><span class=\"me2\">addSqlAssociation<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'product'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'p'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INNER JOIN `'<\/span><span class=\"sy0\">.<\/span>_DB_PREFIX_<span class=\"sy0\">.<\/span><span class=\"st_h\">'product_lang` pl ON (<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; p.`id_product` = pl.`id_product`<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AND pl.`id_lang` = '<\/span><span class=\"sy0\">.<\/span><span class=\"br0\">&#40;<\/span>int<span class=\"br0\">&#41;<\/span><span class=\"re0\">$id_lang<\/span><span class=\"sy0\">.<\/span>Shop<span class=\"sy0\">::<\/span><span class=\"me2\">addSqlRestrictionOnLang<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'pl'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LEFT JOIN `'<\/span><span class=\"sy0\">.<\/span>_DB_PREFIX_<span class=\"sy0\">.<\/span><span class=\"st_h\">'product_attribute` pa ON (p.`id_product` = pa.`id_product`)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '<\/span><span class=\"sy0\">.<\/span>Shop<span class=\"sy0\">::<\/span><span class=\"me2\">addSqlAssociation<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'product_attribute'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'pa'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw4\">false<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'product_attribute_shop.`default_on` = 1'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '<\/span><span class=\"sy0\">.<\/span>Product<span class=\"sy0\">::<\/span><span class=\"me2\">sqlStock<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'p'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'product_attribute_shop'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw4\">false<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$context<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">shop<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LEFT JOIN `'<\/span><span class=\"sy0\">.<\/span>_DB_PREFIX_<span class=\"sy0\">.<\/span><span class=\"st_h\">'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer`<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LEFT JOIN `'<\/span><span class=\"sy0\">.<\/span>_DB_PREFIX_<span class=\"sy0\">.<\/span><span class=\"st_h\">'image` i ON (i.`id_product` = p.`id_product`)'<\/span><span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Shop<span class=\"sy0\">::<\/span><span class=\"me2\">addSqlAssociation<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'image'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'i'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw4\">false<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'image_shop.cover=1'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LEFT JOIN `'<\/span><span class=\"sy0\">.<\/span>_DB_PREFIX_<span class=\"sy0\">.<\/span><span class=\"st_h\">'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '<\/span><span class=\"sy0\">.<\/span><span class=\"br0\">&#40;<\/span>int<span class=\"br0\">&#41;<\/span><span class=\"re0\">$id_lang<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">')<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WHERE p.`id_product` IN('<\/span><span class=\"sy0\">.<\/span><a href=\"http:\/\/www.php.net\/implode\"><span class=\"kw3\">implode<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">','<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$sphinx_results<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'results'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">')<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GROUP BY product_shop.id_product'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$result<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$db<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">executeS<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$sql<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ results count<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$total<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$sphinx_results<\/span><span class=\"br0\">&#91;<\/span><span class=\"st_h\">'total'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><span class=\"re0\">$result<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$result_properties<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$result_properties<\/span> <span class=\"sy0\">=<\/span> Product<span class=\"sy0\">::<\/span><span class=\"me2\">getProductsProperties<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>int<span class=\"br0\">&#41;<\/span><span class=\"re0\">$id_lang<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$result<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'total'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$total<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'result'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$result_properties<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">protected<\/span> static <span class=\"kw2\">function<\/span> getSphinxResults<span class=\"br0\">&#40;<\/span><span class=\"re0\">$search_query<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$page_number<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$page_size<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$results<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$total<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><span class=\"re0\">$search_query<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"kw4\">null<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ connect to Sphinx database<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$link<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/mysqli_connect\"><span class=\"kw3\">mysqli_connect<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'127.0.0.1'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">''<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">''<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">''<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'9306'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$link<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$query<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'SELECT * FROM `PrestaSite` WHERE MATCH('<\/span><span class=\"st_h\">'.pSQL($search_query).'<\/span><span class=\"st_h\">') limit '<\/span><span class=\"sy0\">.<\/span><span class=\"br0\">&#40;<\/span>int<span class=\"br0\">&#41;<\/span><span class=\"re0\">$page_number<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">', '<\/span><span class=\"sy0\">.<\/span><span class=\"br0\">&#40;<\/span>int<span class=\"br0\">&#41;<\/span><span class=\"re0\">$page_size<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">';'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$result<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$link<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">query<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$query<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">while<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$query_results<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$result<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fetch_array<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$results<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array_merge\"><span class=\"kw3\">array_merge<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$results<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$query_results<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"coMULTI\">\/* clear result *\/<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$result<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ get count of results<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$query_total<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'SELECT count(*) FROM `PrestaSite` WHERE MATCH('<\/span><span class=\"st_h\">'.pSQL($search_query).'<\/span><span class=\"st_h\">');'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$result<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$link<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">query<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$query_total<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$total<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>int<span class=\"br0\">&#41;<\/span><span class=\"re0\">$result<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fetch_array<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$total<\/span> <span class=\"sy0\">&gt;<\/span> <span class=\"nu0\">1000<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re0\">$total<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">1000<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.php.net\/mysqli_close\"><span class=\"kw3\">mysqli_close<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$link<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'results'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$results<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'total'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$total<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Fondamentalement, le code est assez simple. Nous surchargeons la fonction &#8220;find&#8221;, dans laquelle nous rempla\u00e7ons la recherche de PrestaShop par la recherche Sphinx. Sphinx renvoie les ID des produits et, en utilisant ces ID, nous interrogeons les donn\u00e9es des produits. La deuxi\u00e8me fonction (getSphinxResults) effectue directement la recherche.<\/p>\n<p>\u00c0 la fin, vous devez vider le cache et supprimer le cache de classe (\/cache\/class_index.php). Tout est termin\u00e9 !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PrestaShop a un bel outil de recherche, mais parfois il ne r\u00e9pond pas \u00e0 tous vos besoins. De plus, il n&#8217;est pas vraiment rapide et sur les grandes boutiques, la recherche et l&#8217;indexation peuvent \u00eatre tr\u00e8s lentes. Si vous voulez quelque chose de mieux, vous pouvez utiliser un excellent remplacement &#8211; Sphinx.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[100],"tags":[],"class_list":["post-894","post","type-post","status-publish","format-standard","hentry","category-tutoriels-et-guides"],"_links":{"self":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/894","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/comments?post=894"}],"version-history":[{"count":1,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/894\/revisions"}],"predecessor-version":[{"id":938,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/894\/revisions\/938"}],"wp:attachment":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/media?parent=894"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/categories?post=894"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/tags?post=894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}