Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwanie w bazie danych, jakiej metody użyć?
Leszczu85
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
ghostrider
post
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:
  1. ALTER TABLE `bazadanych`.`tabela` ADD FULLTEXT `Index`(`pole_text`);

najlepiej po dodaniu wszyskich wpisów, a nie przy tworzeniu tabeli.

potem kwerendy:
  1. SELECT *
  2. FROM `bazadanych`.`tabela` WHERE MATCH (`tabela`.`pole_text`) AGAINST ('szukane fraza');


takie zapytanie odrazu sortuje wpisy zależnie od "wagi"

lub

  1. SELECT *, MATCH `tabela`.`pole_text` AGAINST ('szukane fraza') AS trafnosc
  2. FROM `bazadanych`.`tabela`;


jesli chcemy pokazać jak trafne sa resultaty

odsylam tez do dokumentacji MySQL
Go to the top of the page
+Quote Post

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: 24.08.2025 - 22:32