Sortowanie tablic z uwzględnieniem specyficznych potrzeb aplikacji – sortowanie fuzzy

Założenie: Naszym celem jest posortowanie tablicy wyników wyszukiwania, tak aby wyniki najbardziej zbliżone do zapytania użytkownika znajdowały się na górze listy. Użyjemy prostego algorytmu “fuzzy matching” do oceny podobieństwa.

Krok po kroku:

  1. Przygotowanie danych: Załóżmy, że mamy tablicę z wynikami wyszukiwania, gdzie każdy element jest tablicą asocjacyjną zawierającą tytuł i opis.
  2. 
    $wyniki = [
        ['tytul' => 'Programowanie w PHP', 'opis' => 'Kurs programowania w języku PHP.'],
        ['tytul' => 'PHP dla początkujących', 'opis' => 'Wprowadzenie do programowania w PHP.'],
        ['tytul' => 'Podstawy PHP', 'opis' => 'Nauka podstaw języka PHP.'],
        ['tytul' => 'Zaawansowane PHP', 'opis' => 'Zaawansowane techniki programowania w PHP.'],
        ['tytul' => 'PHP i bazy danych', 'opis' => 'Praca z bazami danych w PHP.'],
    ];
    $zapytanie = 'programowanie php';
    				
  3. Funkcja obliczająca podobieństwo: Stwórzmy funkcję, która obliczy podobieństwo między dwoma stringami (zapytaniem i tytułem) używając funkcji `similar_text`.
  4. 
    function obliczPodobienstwo($tekst1, $tekst2) {
        similar_text($tekst1, $tekst2, $procent);
        return $procent;
    }
    				
  5. Sortowanie tablicy: Użyjmy funkcji `usort` do posortowania tablicy `$wyniki` malejąco, na podstawie wartości zwracanej przez funkcję `obliczPodobienstwo`.
  6. 
    usort($wyniki, function($a, $b) use ($zapytanie) {
        $podobienstwoA = obliczPodobienstwo(strtolower($zapytanie), strtolower($a['tytul']));
        $podobienstwoB = obliczPodobienstwo(strtolower($zapytanie), strtolower($b['tytul']));
        return $podobienstwoB - $podobienstwoA; // Sortowanie malejąco
    });
    				
  7. Wyświetlenie wyników: Wyświetlamy posortowaną tablicę.
  8. 
    foreach ($wyniki as $wynik) {
        echo 'Tytuł: ' . $wynik['tytul'] . '
    '; echo 'Opis: ' . $wynik['opis'] . '

    '; }

Ten przykład pokazuje podstawy sortowania tablic w PHP z uwzględnieniem podobieństwa tekstowego. Zachęcamy do eksperymentowania z innymi algorytmami fuzzy matching i rozwijania tego przykładu!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *