Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z systemem tagów
adam882
post
Post #1





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

Ostrzeżenie: (0%)
-----


Witam

Napisałem system tagów , w którym rolę odgrywają dwie tabele:
strony(id,nazwa,opis...)i tagi(id,nazwa,nazwaoryginalna,idstrony).
Oprócz samych słów przechowywane są też frazy kilku słowne (np. "gry", "darmowe gry" itp.).
Problem pojawia się w przypadku, kiedy strona posiada dwa podobne tagi np. "tanie mieszkania" oraz "tanie domy" i w momencie użycia systemu tagów i szukania słowa pasującego do "tanie" w wyszukiwarce mamy zapytanie WHERE tagi.nazwa LIKE "tanie%" i przez to pokazuje w wynikach dwa razy tę samą stronę. Czy można użyć lepszą metodę? Cy jedynym rozwiązaniem jest zaprzestanie użycia znaku % i w ten sposób szukając frazy "tanie mieszania" rozbijamy frazę i używamy zapytania Where tagi.nazwa LIKE "tanie" OR "mieszkania" OR "tanie mieszkania" ? Wydaje mi się, że tego typu metoda może okazać się nieoptymalna w przypadku długich fraz.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adam882
post
Post #2





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

Ostrzeżenie: (0%)
-----


Zapytanie wygląda tak:
  1. 'SELECT DISTINCT count('.PREFIX.'strony.id) AS ile FROM '.PREFIX.'tagi LEFT JOIN '.PREFIX.'strony ON ('.PREFIX.'tagi.idstrony='.PREFIX.'strony.id) WHERE activ=1 AND '.PREFIX.'tagi.nazwa LIKE "'.$szukaj.'" LIMIT 1 '

i niestety nie uwzględnia select distinic (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) (liczy w "ile" również powtarzające się rekordy)

Ten post edytował adam882 27.06.2009, 19:28:25
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 18:45