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
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:
<?php $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%`'; $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); { ... } ?>
w ten sposób do tablica $trafnosc zapelnia sie tak:
<?php $trafnosc[ai_id] = (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'); ?>
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?