Pabandysiu trumpai: paieškos sistemų gamyba yra labai rimtas ir gana sudėtingas procesas. Kuo norima turėti tikslesnius rezultatus, kuo greičiau, iš kuo daugiau duomenų tuo tai kainuos daugiau tiek resursų tiek programavimo laiko.
Jeigu paieška yra paprasta - ok - pasidaryk ją pats, jeigu sudėtinga - gal vertėtų pasinaudoti jau sukurtais paieškos varikliais, tokiais kaip Lucene, Google ir pan.
Kalbant apie konkretų atvejį, praktika rodo, kad geriau iš anksto "sukramtyti" duomenis taip, kad norint atlikti paiešką, nereikėtų daug vargti. Tai mano akimis procesas turėtų būti toks:
a) yra indekso stukrūta, kurioje guli visi žodžiai, ir visi ryšiai su objektais;
b) objekto (šiuo atveju teksto) įkėlimo metu, jis yra skaidomas į žodžius, nauji žodžiai keliami į indeksą, surandami visi esantys, suskaičiuojami kiekiai ir viskas surašomą į indekso-objekto ryšių lentelę;
c) paieška atliekama indekso-ryšių lentelėje (pati paieška indekse, o rikiavimas pagal ryšiuose esančius kiekius kiekvienam objektui);
Tai čia toks kelias gaunamas logiškai mąstant. Kurioje vietoje galima kažką spartinti, karpyti, tobulinti pasimatys realizuojant. Arba pačioje pradžioje vertėtų atlikti eksperimentų/modeliavimų.
čia viską rašiau remdamasis ta patirtimi, kad dažniausiai objektų įkėlimų (INSERT) į sistemą skaičius yra pakankamai mažas lyginant su atliekamų paieškų (.. SELECT) skaičiumi. Tokiais atvejais visą sunkų darbą atliekame įkėlimo metu, tam, kad skaitant viskas būtų labai lengva ir paprasta.