Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zaawansowana wyszukiwarka, jak wyszukiwac by obliczyc trafnosc ...
ElemenT
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 29.03.2003
Skąd: Warszawa

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


Witam

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 :
  1. 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
  2. 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 ?

Ten post edytował ElemenT 13.05.2005, 14:42:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ElemenT
post
Post #2





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 29.03.2003
Skąd: Warszawa

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


tak jak napisal marcin
fulltext z pola ktore ma tylko tekst, wywalone tagi html itp.
potem match , against
  1. SELECT MATCH (nazwa,wstep,tresc) AGAINST ('slowo') AS trafnosc
  2. FROM baza WHERE MATCH (nazwa,wstep,tresc) AGAINST ('slowo')


przy sprawdzaniu poprawnosci wyszukiwanych danych zrobilem takie cos
dalo mi to max punkt odniesienia - 100%

potem zaladowanie informacji o szukaniu do bazy szukaj - wlasnie ta trafnosc, w jakich dzialach sie szuka, czego sie szuka itp.
przeladowanie stronki

i zapytanie
wyliczenie procentu
  1. <?php
  2.  
  3. $procent = round((round($row[trafnosc],5)/$search[trafnosc])*100,1);
  4. ?>


tak po krotce

w dzialaniu : wyszukiwarka
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 04:34