![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Chce zrobic prosta wyszukiwarke ktora by wyszukiwala z 2 pol
ale chodzi o to zeby uporzadkowal wyniki tak aby te rekordy ktore w tytule maja lowo kluczowe byly 2 razy bardziej brane pod uwage Ewentualnie jesli to mozliwe braly pod uwage ilosc wystapien slowa kluczowego Jak by ktos rzucil przykladem bylbym wdzieczny i jak by ktos podal godnego polecenia linka do kursu opisujacego to zagadnienie to byloby super tak przy okazji pytanie czy zwroci mi cokolwiek zapytanie z warunkiem
jesli ktoras ze zmiennych $costam bedzie pusta? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 32 Dołączył: 14.04.2008 Skąd: Lenkowski.net Ostrzeżenie: (0%) ![]() ![]() |
Możesz dac podem ORDER BY `nazwakolumny` ASC, np.
Dodatkowo radze ci żeby wyszukiwało po części w tytule czyli
Ten post edytował MWL 16.04.2008, 16:47:50 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
dzieki chociaz nie do konca takiej odpowiedzi oczekiwalem bo sprawdza sie to wprzypadku 2 pol w warunku a co jak bedzie np 5 i kazdy bedzie mial inna wage?
Podalem tu najprostsze przyklady zeby zobrazowac w rzeczywistosci zapytanie juz nie bedzie tak banalne to samo sie tyczy wyszukiwania po czesci w tytule Dalem to tylko jako przyklad nie rozpisywalem sie z szczegolami |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A ja bym polecił poszukać o wyszukiwaniu pełno tekstowym i rankingowaniu (w PostgreSQL jest tsearch2)
Jak już czy jest coś w tytule, to nie
a raczej
Gdzie 2 to waga, potem + itd. czyli trafienie razy wara Ten post edytował Sedziwoj 16.04.2008, 17:26:06 |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
zakładając, że mamy w tabeli klucz podstawowy id, można zbudować coś w rodzaju:
ten szablon możesz sobie rozbudowywać o kolejne warunki (dodając kolejne UNION ALL SELECT ...). możesz go swobodnie dopasowywać stosując przeróżne kombinacje WHERE ... dodatkowy bonus - jeżeli dany rekord pasuje jednocześnie do kilku warunków, to jego wynik jest sumą wag ze wszystkich warunków. czyli na twoim przykładzie - jeśli spełniony jest warunek dla tematu - wynik=2, jeżeli dla treści - wynik=1, jeżeli dla tematu i treści jednoczesnie - wynik=3 - i ten rekord znajdzie się najwyżej ... powodzenia. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@nevt
Nie dałeś nic więcej ode mnie w możliwościach do tego u Ciebie jest dwa razy przeglądana tabela i do tego wyniki jeszcze raz (oczywiście coś baza zoptymalizuje, ale mimo wszystko), Każdy warunek dodatkowy daje kolejne przejście tablicy. Do tego korzystasz z specyficznego działania MySQL'a. |
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
przyjacielu sedziwoj ...
Cytat A ja bym polecił poszukać o wyszukiwaniu pełno tekstowym i rankingowaniu (w PostgreSQL jest tsearch2) .... Do tego korzystasz z specyficznego działania MySQL'a kolega di@blo umieścił temat w dziale MySQL a nie PostgreSQL ... poza tym nigdzie nie napisał, ze che używać full text search na polach typu text ... pozwólmy zainteresowanemu wypowiedzieć się samodzielnie, która sugestia jest bliższa rozwiązania jego problemów ... poza tym Cytat Nie dałeś nic więcej ode mnie w możliwościach do tego a co ty dałeś ? korektę do ORDER BY ... naprawdę rozbawiłeś mnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
przyjacielu sedziwoj ... Na pewno nie przyjacielu, na takie miano trzeba zasłużyć. Cytat kolega di@blo umieścił temat w dziale MySQL a nie PostgreSQL ... poza tym nigdzie nie napisał, ze che używać full text search na polach typu text ... To była tylko sugestia, taka wstępna, nic nie miała do dalszej wypowiedzi, ani jej nie rozwijałem, po prostu napomknąłem o innych rozwiązaniach. Cytat a co ty dałeś ? korektę do ORDER BY ... naprawdę rozbawiłeś mnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) I ta korekta robi to co Twoje wspaniałe rozwiązanie, robi to szybciej, więc nie jestem pewien z czego to rozbawianie. Bo chyba nie zwróciłeś nawet uwago co ta korekta robi, a robi sporo. Więc radzę przetestować to co napisałem z różnymi mnożnikami i sumą trafności innych warunków, niż nabijać się z czegoś czego nawet nie zrozumiałeś. P.S. Zobaczyłem literówkę, bo miało być waga, ale nie będę zmieniać aby nie poszły domysły o manipulacji. Ogólnie to wgląda tak, dopowiadam jakby ktoś nie zrozumiał
Ponieważ porównanie daje 0 lub 1 mamy dwie wartości, możemy użyć ilości wystąpień słowa wtedy mamy też brane pod uwagę ilość wystąpień, możliwości jest sporo, ważne w tym jest to żeby właśnie użyć ORDER BY nie na wartościach bezpośrednio, a na pewnie przetworzonych. |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
słuchaj koleś (tak lepiej ?) - przestań tu sobie nabijać posty. nie wnosisz nic nowego do tematu. uważasz, że zjadłeś wszystkie rozumy - twoja sprawa. ja kiedy przedstawiłem swoją propozycję nie wciskałem kitu, że jest lepsza od twojej. to sobie oceni autor wątku samodzielnie. masz do mnie jakieś osobiste urazy? to pisz na PW - za następny bezsensowny post w tym temacie poleci warn. dobranoc.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
słuchaj koleś (tak lepiej ?) - przestań tu sobie nabijać posty. nie wnosisz nic nowego do tematu. uważasz, że zjadłeś wszystkie rozumy - twoja sprawa. ja kiedy przedstawiłem swoją propozycję nie wciskałem kitu, że jest lepsza od twojej. to sobie oceni autor wątku samodzielnie. masz do mnie jakieś osobiste urazy? to pisz na PW - za następny bezsensowny post w tym temacie poleci warn. dobranoc. To niech leci warn, ale to Twój ostatni post był nie na temat, więc Tobie też powinien polecieć. Do tego ja podałem dlaczego moje rozwiązanie jest lepsze, tak się zaczyna zazwyczaj dyskusję na temat co jest lepsze, tak normalnie się dzieje, ale nie potrafiłeś uzasadnić dlaczego Twoje jest lepsze, do tego zacząłeś się mnie czepiać, więc nie wiem kto tu sobie posty nabija. Zwracam uwagę że z rankingowaniem są pewne problemy, sam poszukiwałem niby dla niedużej puli danych 200MB, 100tys. rekordów i już był problem, bo wymaga odpowiedniego serwera, samo wyszukanie to były milisekundy, ale budowa rankingu i sortowanie trwało do 25s... (w zależności od ilości trafień). Jakby były jakieś pytania co do mojego rozwiązania to chętnie odpisze, w miarę mojej wiedzy. EDIT: zjedzone slowo Ten post edytował Sedziwoj 16.04.2008, 22:29:56 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze to post jest by pomagac a ne klocic sie kto ma lepsze rozwiazanie
Po drugie w gre wchodzi tylko mysql Po trzecie z tego co wiem to w mysql jest cos takiego jak zapytanie wazone czy cos w tym stylu Po czwarte oprocz gotowych rozwiazan przydalby sie jakis link do kursu czy cos w tym stylu Jestem w dobrej sytuacji bo moge wybierac (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ale nie wiem czy w 100% dziala tak jak chce Chodzi mi to ze mam np 3 pola pierwsze pole ma wage 3 drugie wage 2 a trzecie wage 1 i ma sortowac tak ze np: rekord ktory w polu 2 ma np 2 slowa kluczowe bedzie wyzej niz rekord ktory bedzie mial lowo kluczowe w polu pierwszym itp Rozwiazania uwzgledniaja ilosc wystapien slowa kluczowego w jednym polu? Ten post edytował di@blo 17.04.2008, 16:10:17 |
|
|
![]()
Post
#12
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
Cytat Po trzecie z tego co wiem to w mysql jest cos takiego jak zapytanie wazone czy cos w tym stylu to podziel się z nami tą wiedzą - sam się chętnie nauczę czegoś nowego ... Cytat nadal nik mi ni odpowiedzial na pytanie czy zwroci mi cokolwiek zapytanie z warunkiem ... a ty sam przez dwa dni nie znalazłeś czasu i sposobu żeby sobie wklepać to zapytanie do bazy i zobaczyć co się stanie ? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 9.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Chetnie bym sie podzieli ale jak bym wiedzial to bym nie pytal o to
Kilka razy cos tam czytalem niestety nie interesowalo mnie to bo nie bylo mi wtedy potrzebne a co 2 czesci to jak uporam sie z innymi rzeczami to sam sobie sprawdze ale chyba szybciej komus odpowiedziec w kilku slowach co mu zajmie max 1 min niz testowac rozwazanie Ten post edytował di@blo 17.04.2008, 16:11:54 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:38 |