Kaynağa Gözat

Amélioration du moteur de recherche de tags: Repère les tags composé de plueiurs mot correspondant a la recherche si cette recherche est composé de plueiurs mots.

bastien 12 yıl önce
ebeveyn
işleme
15750a5cd3

+ 34 - 0
src/Muzich/CoreBundle/Controller/SearchController.php Dosyayı Görüntüle

@@ -257,6 +257,40 @@ class SearchController extends Controller
257 257
       
258 258
     }
259 259
     
260
+    // Uniquement dans le cas de présence d'un espace/separateur ou plus
261
+    // on cherche les mot composé comme lui
262
+    $terms = array_merge(
263
+      explode(' ', $search), 
264
+      explode('-', $search)
265
+    );
266
+    $tags_counteds = array();
267
+    foreach ($tags as $i => $tag)
268
+    {
269
+      foreach ($terms as $word)
270
+      {
271
+        if (strpos(strtoupper($tag['slug']), strtoupper($word)) !== false)
272
+        {
273
+          $count = 1;
274
+          if (array_key_exists($tag['id'], $tags_counteds))
275
+          {
276
+            $count = ($tags_counteds[$tag['id']]['count'])+1;
277
+          }
278
+          $tags_counteds[$tag['id']] = array(
279
+            'count' => $count,
280
+            'tag'   => $tag
281
+          );
282
+        }
283
+      }
284
+    }
285
+    
286
+    foreach ($tags_counteds as $id => $counted)
287
+    {
288
+      if ($counted['count'] > 1)
289
+      {
290
+        $tag_sorted = $this->sort_addtop_if_isnt_in($tag_sorted, $counted['tag']);
291
+      }
292
+    }
293
+    
260 294
     foreach ($tags as $i => $tag)
261 295
     {
262 296
       // Chaine de caractère identique