Mam nastepujacy problem.
Tabela SQLowa z tekstami oraz tabela ze slowami indeksowymi.
Slowa indexowe tworza sie podczas dodawania tekstu do bazy, wywalane sa niepotrzebne znaki oraz slowa nie znaczace nic podczas wyszukiwania (np, a, lub itp), dodatkowo obliczana jest ilosc wystapienia danego slowa w tekscie.
Sprawa wyszukania niby prosta.
Wpisujemy slowo np 'minister' i znajduje mi 30 tekstow posortowanych wg trafnosci (ilosc wystapien w tekscie). Wylistowanie wynikow.
Wszyskto pieknie.
Problem pojawia sie w momencie wpisania do wyszukiwarki 'minister kalisz wyjechal do moskwy'.
Obecnie program mam tak zrobiony ze szuka slowa minister, potem kalisz, podem wyjechal i na koncu moskwy.
I wyswietla wyniki, z tym ze nie wylatuja teksty gdzie np bylo 30 wystapien slowa minister a ani jednego kalisz, wyjechal i moskwy. A tekst w ktorym wszystkie te slowa wystepuja wyskakuje gdzies na koncu.
Zapytanie do bazki robi sie takie :
SELECT cms_ure_searchwords.ile, cms_ure_searchwords.id, cms_ure_dzialy.nazwa, cms_ure_dzialy.wstep, cms_ure_dzialy.kat, cms_ure_dzialy.publikacja FROM cms_ure_searchwords,cms_ure_dzialy WHERE cms_ure_dzialy.id=cms_ure_searchwords.id AND cms_ure_searchwords.slowa IN ('minister','kalisz','wyjechał','moskwy') GROUP BY cms_ure_searchwords.id ORDER BY cms_ure_searchwords.ile DESC
Wyszukiwarka jest swietna jezeli ktos wyszukuje 1 slowo. Problem jest jak ktos szuka frazy.
Jak byscie zaprojektowali wyszukiwarke reagujaca na frazy, z uzyciem tabeli slow indeksowych i by byla wyliczana trafnosc ?