Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Podobieństwo plików
uirapuru
post 6.04.2010, 14:40:24
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ł?
Go to the top of the page
+Quote Post
Savail
post 6.04.2010, 14:45:11
Post #2





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 25.07.2008

Ostrzeżenie: (10%)
X----


poczytaj o funkcji similar_text. Powinna byc pomocna ^^
  1. similar_text($string1, $string2, $procent);

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:
  1. $ile = count($procent);
  2. for($i=0; $i<$ile; $i++){
  3. echo $procent[$i]
  4. }


Ten post edytował Savail 6.04.2010, 15:54:20
Go to the top of the page
+Quote Post
phpion
post 6.04.2010, 14:59:13
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.07.2025 - 17:40