Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][MySQL] wyszkiwanie
dtb
post 6.01.2006, 19:58:08
Post #1





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


Posiadam strone z duza iloscia artykulow. Doszedlem do wniosku ze sam podzial na kategorie nie wystarczo aby skutecznie nawigowac. Postanowilem zrobic wyszukiwarke. Wymyslilem juz nawet algorytm ale napotkalem problem. Wyjasnie wszystki krok po kroku.

Mam dwie tabele:
Kod
arts_inf: - tabela z artami
ai_id (auto_increment) - id artykuly  <-----------------
ai_name - nazwa arta                                    |
ai_keywords - slowa kluczowe (do wyszukiwania)          |
                                                         |
arts_elm: - tabela z elementami artow                   |
ae_id (auto_increment)                                  |
ai_id - id arta  <--------------------------------------
ae_top - polozenie elementu od gory
ae_type - typ elementy (naglowek / tekst / grafika itd.)
ae_text - zawartosc elementu


mam nadzieje ze jasno to wytlumaczylem i bedziecie wiedziec jak dane sa zapisywane.
teraz wyjasniam jak by to mialo wyszukiwac:

  1. <?php
  2. $trafnosc = array();
  3.  
  4. $where = 'i.ai_name LIKE `%slowo_kluczowe_1%` OR i.ai_name LIKE `%slowo_kluczowe_2%` OR i.ai_keywords LIKE `%slowo_kluczowe_1%` OR i.ai_keywords LIKE `%slowo_kluczowe_2%` OR e.ae_tex LIKE `%slowo_kluczowe_1%` OR e.ae_text LIKE `%slowo_kluczowe_2%`';
  5.  
  6. $q = query ('SELECT i.ai_id, i.ai_name, i.ai_keywords, e.ai_id, e.ae_text, e.ae_typ FROM arts
    _inf as i, arts_elm as e WHERE %s'
    , $where);
  7.  
  8. while ($r = mysql_fetch_array ($q))
  9. {
  10. ...
  11. }
  12. ?>


w ten sposób do tablica $trafnosc zapelnia sie tak:

  1. <?php
  2. $trafnosc[ai_id] =
  3. (ile razy jakies slowo kluczowych wystapilo w kolumnie ai_name)*3 + (ile razy jakies slowo wystapilo w kolumnie ai_keywords)*3 + (ile razy jakis slowo kluczowe wystapilo w kolumnie ae_text gdzie ae_type == 'naglowek')*2 + (ile razy jakies slowo kluczowe wystapilo w kolumnie ae_text gdzie ae_type == 'tekst');
  4. ?>


teraz sortujemy tablice i mamy uporzadkowane od najbardziej trafnych do najmniej artow (asort + SORT_NUMERIC).

PYTANIE 1:
jezeli tablica jest uporzadkowana w ten sposob:
$trafnosc[23] = najwieksza_trafnosc;
$trafnosc[238] = duza trafnosc;
$trafnosc[59] = mniejsza trafnosc;
(...)
to jak za pomoca jednego selecta wybrac nazwy artow sortujac je aby piewszy wybrany rekord mial ai_id = 23, drugi ai_id = 238, treci ai_id = 59...

PYTANIE 2:
co myslicie o takim sposobie wyszukiwania?

Ten post edytował dtb 6.01.2006, 20:08:31


--------------------
Go to the top of the page
+Quote Post

Posty w temacie


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: 21.06.2025 - 23:52