![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 182 Pomógł: 9 Dołączył: 30.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam katalog plików, siedzi to sobie w bazie, należy każdy plik do jednej lub wielu kategorii, jest również opisany jakimiś tam tagami (zachowanymi w tablicy tagów, w przypadku tagu, który jeszcze tam nie istnieje - jest on dodawany do tablicy), posiada swoją nazwę.
Zastanawiam się jak zrobić taki box "Podobne pliki" na stronie: przy pokazywaniu jednego z plików obok pojawiałaby się lista np. 10 podobnych plików. Jako kryteria do określenia podobieństwa chciałbym obrać właśnie nazwę, tagi i kategorię, do której przynależy plik. Nie mam jednak za cholerę pomysłu jak to wszystko ogarnąć, a najlepiej, jeśli dałoby się to zrobić po stronie bazy danych. Wyobrażam to sobie jako jakąś wielką funkcję, która porównuje pliki każdy z każdym i wylicza jakieś tam procentowe podobieństwo, a zwraca listę plików powyżej danego progu punktowego). Albo może przy dodawaniu już pliku liczyć mu z danych jakiś tam hash czy coś ( jednak przy aktualizacji tablic może on sie okazywać nieaktualny (np. dodanie tagów itp)), a przy szukaniu podobnych plików porównywać już same hashe (np. string z soundex plus kilka id od tagów i kategorii). Macie lepszy pomysł? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 25.07.2008 Ostrzeżenie: (10%) ![]() ![]() |
poczytaj o funkcji similar_text. Powinna byc pomocna ^^
dane do porównywania ustawiasz jako string1 i string2. $procent automatycznie liczy procent podobienstwa. Oczywiscie mozliwe ze bedziesz potrzebowal uzycia roznych petli zeby to wszystko zlozyc do kupy Edycja: Zapomnialem dodac ze jesli $string1 i $string2 beda np tablicami przechowujacymi wiele nazw to aby $procent wyswietlal procent obliczany dla nazwy kazdej z osobna to wystarczy zamiast $procent wpisac $procent[] w similar_text. Pozniej:
Ten post edytował Savail 6.04.2010, 15:54:20 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Jeśli po stronie bazy i jeśli bazą tą jest MySQL to może SOUNDEX. Niestety ma pewne ograniczenia:
Cytat This function, as currently implemented, is intended to work well with strings that are in the English language only. Strings in other languages may not produce reliable results.
This function is not guaranteed to provide consistent results with strings that use multi-byte character sets, including utf-8. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.07.2025 - 17:40 |