![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chcę na stronie zrobić ramkę "Zobacz też" przy każdym newsie. W ramce byłyby prezentowane 3 podobne tematycznie inne wiadomości. Oparte miałoby to być na tagach, tak chyba najłatwiej. W każdym newsie mam pole 'tagi' i tam wypisuje je po przecinku. Jak zrobić żeby spośród tych tagów wybierało te ważniejsze (czyli te które są napisane w pierwszej kolejności) i wg nich szukało w bazie innych newsów, które mają ten sam tag gdzieś na początku. Sortowane były od najnowszych. Jak ułożyć zapytanie żeby wybierało najbardziej trafne tematy pokrewne? Chyba nie ma sensu stosować wyszukiwania full text na tagach/tytule?
-------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Jeśli tagi zapisujesz jako ciąg znaków to jesteś w niezbyt dogodnej sytuacji. Użytkownik może podać je w formie tekstu, ale Ty powinieneś rozbić je na pojedyncze tagi i zapisywać do osobnej tabeli (w sumie 2 tabel). Wówczas sprawa jest prostsza. Na chwilę obecną nie widzę lepszego rozwiązania niż wyciągnięcie pierwszego tagu i zrobienie LIKE.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zgadzam się z @up - to w ogóle nie powinno być w ten sposób zrobione, że masz tagi w jednym polu po przecinkach. Dużo lepsze i wydajniejsze okazuje się utworzoenie osobnej tabelki tagów oraz tabeli wiązań - tak zwana relacja "n do n". Wtedy również możesz łatwo i sprytnie wygenerować chmurki tagów - co w twoim aktualnym kodzie jest nieco cięższe.
Moja propozycja - przerób to - zrób te dwie tabelki - tagi i powiązania. Przeleć całą bazę i powrzucaj odpowiednio tagi. Następnie zaktualizuj swój kod tak by przy dodawaniu newsa tworzył odpowiednie rekordy w tych tabelkach (bez duplikowania tagów). Wyszukiwanie po czymś takim jest proste i daje zamierzone rezultaty. -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A ja proponuję tylko rozszerzenie tego co już ma. Niech zostawi to osobne pole z przecinkai, ale doda też tabelę z połączeniami n-n o której tu było wspomniane. Czemu? "Zobacz też" zrobi za chmurę tagów, ale pole z przecinkami można ująć w full-text searcha razem z treścią i tytułem oraz używać do wyszukiwań pełnotekstowych.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Pytanie czy full-text nie obciąży za bardzo bazy? Słyszałem że jest dosyć zasobożerne.
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 04:12 |