Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tagi - wyszukiwanie podobnych :/
ahold
post 21.06.2009, 17:27:15
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.05.2009

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


Dzieńdoberek,


Ostatnio dyskutowaliśmy sobie na temat "tagowania" materiałów.
Doszliśmy że zrobimy osobną tabelę, w niej podamy "własciciela","identyfikator artykułu","tag".
Plus oczywiście data która ma nam umilić zarządzanie.

Wpadłem trochę w tarapaty ponieważ patrzę na projekt i myslę, upsss, jest problem.

PODOBNE ARTYKUŁY
bazując na tagach.

No super, tylko jak się za to zabrać snitch.gif

Selektem możemy wyciągnąć tagi przypisane do danego artykułu.
dostaniemy powiedzmy
ala
ma
kota
białego



I kurcze, jak teraz zrobić do tego "podobne"

To jest pytanie, za 100 punktów.

Jasnę, można zrobić SELECT xxx FROM xxx WHERE xxx LIKE '%tag1% AND LIKE '%tag2%'
Ale, co mi to kurcze da ?
Chyba nie posegreguje mi danych według tendencji rosnącej czyli najpierw materiały mające najwięcej "takich" tagów, potem te które będą miały tylko jeden tag ?


Koncepcja, przydała by się koncepcja.
Go to the top of the page
+Quote Post
kamil_biela
post 22.06.2009, 00:04:01
Post #2





Grupa: Zarejestrowani
Postów: 31
Pomógł: 7
Dołączył: 14.06.2009
Skąd: Wrocław

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


1. Poczytaj o group by w SQLu

2. selectuj z artykuł, daj JOIN tag_artykul


--------------------
zagr.am - najlepsze flash do zagrania. Codziennie.
Go to the top of the page
+Quote Post
ahold
post 22.06.2009, 15:45:50
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.05.2009

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


Witam,

Po przeczytaniu wielu stron tekstu, wracam wyposażony w pewien kod.

Kod który winnien działać, lecz nie działa.
Tj działa, ale dla tekstów >= 4 znaki.

Konfiguracja serwera SQL poprawna, poniżej screen

min_word_length -> 3 znaki

  1. SELECT * , count( witryna ) AS ilosc
  2. FROM witryny_tagi WHERE MATCH (
  3. tag
  4. )
  5. AGAINST (
  6. 'pda'
  7. )
  8. GROUP BY witryna
  9. ORDER BY ilosc DESC LIMIT 10


Kod zwraca 0

Dla porównania:

WHERE



Kod powyższy, który nie działa, w momencie kiedy użyje 4 znakowego kodu, rusza poprawnie.
Przyznam się szczeże że nie wiem czego to jest wina. Serwe mySQL wydaje się interpretować zapis odnośnie minimalnej ilości znaków, jednakże czemu nie chcę przeszukiwać tych 3 znaków ?

Czy nie macie Państwo jakiejs podpowiedzi ?
Go to the top of the page
+Quote Post
zeulus
post 22.06.2009, 16:09:56
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 3
Dołączył: 17.05.2004
Skąd: Nowhere Land

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


http://dev.mysql.com/doc/refman/5.1/en/ful...ine-tuning.html

Przeczytaj sobie to, co tam jest napisane. Co do długości interesują Cię zmienne ft_min_word_len i ft_max_word_len. Sprawdź sobie też stopwords.

Pozdrawiam


--------------------
Google prawdę mówi, względów się wyrzeka...
Go to the top of the page
+Quote Post
ahold
post 22.06.2009, 16:11:11
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.05.2009

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


Racja, zapomniałem repair table.

Teraz działa.
Go to the top of the page
+Quote Post
kamil_biela
post 22.06.2009, 19:51:32
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 7
Dołączył: 14.06.2009
Skąd: Wrocław

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


Ja bym te podobne tak zrealizował:

pobierasz artykuł (powiedzmy że ma id 13)

pobierasz tagi danego artykułu (powiedzmy 1 i 2)

Kod
SELECT a.*, COUNT(a.id) as cnt FROM artykul a
JOIN artykul_tag at on (a.id = at.a_id)
WHERE at.t_id IN (1, 2) // tutaj dajesz tagi wybranego artykulu
  AND a.id != 13
GROUP BY a.id
HAVING cnt > 0


--------------------
zagr.am - najlepsze flash do zagrania. Codziennie.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:32