like i wyszukanie jak najwiekszej liczby powtorzen

0

Witam wszystkich
Mam oto takie pytanie :
posiadam tabele: Artykuly z polami id,nazwa,opis,tagi(np: koń,krowa,sloń)
i podczas wyswietlania danego artykulu chce zobaczyc wszystkie podobne artykuly poprzez wyszukanie w polu tagi
na razie wyglada to tak ze szukam select * from Artykuly WHERE tagi like '%koń%' OR tagi like '%koń%' itp LIMIT 5

ale wyswietla mi po prostu pierwsze 5 znalezionych a chcialbym zeby mi pokazalo 5 z najwieksza iloscia powtorzen tych slow oraz najwiekszej ilosci znalezionych slow kluczowych
Np:
mam artykul o koniach

Art 1
"Koń ma 4 nogi"
Jak kazdy wie kazdy koń ma 4 nogi, a słoń 3

i tutaj slowo koń x2 i słoń x1

Art2
"Koń ma tylko 2 nogi"
Jak kazdy wie kazdy słoń ma 2 nogi. a Żyrafa ma długą szyje

i tutaj slowo koń x1 i słoń x1 i zyrafa x1

Art3
"Słoń ma tylko 2 nogi"
Jak kazdy wie kazdy słoń ma 2 nogi.

i tutaj slowo słoń x2
t
ak wiec wyszukujac slowa kon, slon, zyrafa chce miec ten art 2 na pierwszym miejscu poniewaz zawiera sie tam wiecej slow kluczowych potem art1 i art3

nie wiem czy ktos to zrozumie o co mi chodzi ale jak tak to moze ktos jest wstanie mi cos podpowiedziec

0

po pierwsze caly pomysl jest niezbyt trafiony
najlepiej jesli mialbys dodatkowa tabele na tagi oraz powiazanie Artykul-Tagi z liczba tych slow kluczowych w artykule (aby nie robic za kazdym razem kosztownego porownania z like)

Artykuly
Id
Nazwa
...

Tagi
Id
Nazwa

ArtykulyTagi
ArtykulId
TagId
IloscWystapien

select * from ArtykulyTagi AT
inner join (select TagId from ArtykulyTagi where ArtykulId = @wyswietlanyArtykulId) as T
on AT.TagId = T.TagId and AT.ArtykulId <> @wyswietlanyArtykulId
inner join Artykuly A on AT.ArtykulId = A.Id
order by AT.IloscWystapien

mozesz ewentualnie jeszcze wybrac dla kazdego tagu tylko kilka pierwszych dla kazdego tagu

jesli nie mozesz zmienic struktury bazy, daj znac pokombinujemy inaczej
napisz jeszcze jaka baza danych, bo pewne pomocne funkcje w kazdej sie roznia

0

no wlasnie chodzi o to ze strona juz dziala od jakeigos czasu i tych artykulow bedzie kilkiaset, wiec taka zmiana kosztowalaby mnie troche pracy nie tylko w samym kodzie ale i w bazie
pomysl z osobna tabela na tagi bedzie chyba najlepszy
mozliwe ze bedzie trzeba to poprawic z tymi tabelami i stracic kupe czasu i nerwow, sam juz nie wiem co z tym fantem zrobic
wydawalo sie ze bedzie to latwe i szybkie a tutaj taki klops :)
ogolnie dzieki wielkie

1 użytkowników online, w tym zalogowanych: 0, gości: 1