![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 29.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam dość rozbudowaną bazę danych (20 tabel po kilkaset do kilku tysięcy rekordów) i potrzebuję zrobić formularz wyszukiwania danych do niej. Zależy mi na przeszukaniu pól typu TEXT w poszukiwaniu jednego z słów kluczowych a wyniki chciałbym posortować wg. trafności. Możecie mi poradzić jakiej metody użyć? Próbowałem LIKE ale nie sprawdza się zbyt dobrze (choć mogę się mylić), słyszałem o wyszukiwaniu pełnotekstowym ale nie wiem czy będzie odpowiednie. Będę wdzięczny za każdą pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 30.09.2005 Skąd: k-rk Ostrzeżenie: (0%) ![]() ![]() |
z tego co piszesz FULL-TEXT jest bedzie właściwym rozwiazaniem, byl optimizowany własnie dla duuuuużych tabel z mnóstwem informacji.
Za ograniczeń to 1. typ tabel to MyISAM, FULL-TEXT nie działa na InnoDB. trzeba też dobrze zrozumieć jak jest ustalana "waga" słow ktorych szukamy ja to nazywam "odwrotną logiką" tzn: im wiecej razy szukana fraza pojawi sie we wpisie tym mniejszą "wagę" ma wpis, najbardziej trafne sa wpisy gdzie fraza pojawia sie najmniej razy, ale przynajmniej raz. indexy pełno textowe tworzy sie tak:
najlepiej po dodaniu wszyskich wpisów, a nie przy tworzeniu tabeli. potem kwerendy:
takie zapytanie odrazu sortuje wpisy zależnie od "wagi" lub
jesli chcemy pokazać jak trafne sa resultaty odsylam tez do dokumentacji MySQL |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 22:32 |