![]() |
![]() ![]() |
![]() |
![]() ![]()
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. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 1 Dołączył: 4.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zamiast SELECT... dajesz SELECT DISTINCT ...
BTW, w większości serwisów web 2.0 tagi to pojedyńcze wyrazy. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 1 Dołączył: 2.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
dzięki, jednak problem pojawia się w przypadku użycia "SELECT DISTINCT count(s.id) AS ile...", gdyż w tym przypadku nie uwzględnia DISTINICT
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
pokaz zapytanie, wystarczy chyba zmienic grupowanie i bedzie tak jak chcesz
-------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 1 Dołączył: 2.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie wygląda tak:
i niestety nie uwzględnia select distinic ![]() Ten post edytował adam882 27.06.2009, 19:28:25 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 10:27 |