Jump to content
php.lv forumi

Meklēšana pēc tagiem


Lynx

Recommended Posts

Meklēju internetā resursus, un diemžēl neatradu nekur materiālus kā realizēt tagu meklēšanas sistēmu(pieļauju, ka izmantoju nepareizos tagus :) ).

 

Pats izdomāju tādus kā divus variantus, bet vēl aizvien nezinu, kuru būtu vislabāk lietot un vai tie ir ērtākie, labākie risinājumi.

 

1) Attiecīgi ziņu tabulai pa kuru notiks meklēšana izveidot papildus lauku "tags(varchar)" un tur savadīt iekšā tagus, pēc tam meklējot vienkārši vērsties pie tā lauka ar LIKE %%

 

2) Izveidot tabulu "tags" un caur to linkot tagus uz vajadzīgo rakstu apmeram šādi id, news_id, tag un pēc tam meklējot izvadīt rakstus, kas atbilstu vajadzīgajam tagam. Šādi varētu arī veidot tagu popularitāti(kā manīts lielos portālos) un automātisko tagu pievienošanos(?).

 

Varbūt kādam ir pieredze šādas sistēmas veidošanā un var padalīties ar to?

Link to comment
Share on other sites

2. ir pareizais risinājums

Tikai nevajag pašu tagu tur glabāt - tag, bet gan tag_id, kurš referencējas uz tagu tabulu (tag_id, tag_name). Jo rakstam jau ir n:n attiecība uz tagiem.

 

Palasi taču jebkuras elementārākās pamācības datubāžu projektēšanā. Tajās taču viss ir aprakstīts - tb populārākās db struktūras. Un šajā gadījumā n:n ir tipiskais risinājums ir trīs tabulas - news un tags, un starptabula.

Palasi arī par normālformām - 1., 2. un 3-šo. Tad vajadzētu kļūt vēl saidrākam, kā jāveido db struktūra.

Link to comment
Share on other sites

Ah perfekti, tieši tas ko meklēju un nevarēju atrast. Paldies.

 

bubu, teorētiski ar pamatiem viss ir kārtībā. Vienkārši gribēju dzirdēt citu viedokli par to, kuru no datubāzes relāciju tipiem tieši izmantot šajā, tagu gadījumā. Jo kā izrādās pēc raksta pirmais variants arī nav slikts pieliekt palildus fulltext indeksu tieši uz lieliem datu apjomiem, pārsteidz ātrdarbībā visus pārējos, jo var iztikt bez unioniem un joiniem. Imho man tik lieli datu apjomi nedraud, tapēc sliecos patiesi izmantot tavu, jeb 3o variantu.

Link to comment
Share on other sites

×
×
  • Create New...