Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]brak wyników wyszukiwania przy użyciu MATCH() AGAINST()
Forum PHP.pl > Forum > Przedszkole
lepikon
Witam
Chciałem wykorzystać funkcje MATCH() AGAINST() do wyszukiwania ciągu znaków.
Założona została tabela:
  1. CREATE TABLE Artykuly(
  2. Id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. Tytul VARCHAR(255),
  4. Tresc VARCHAR(255),
  5. FULLTEXT(Tytul,Tresc)
  6. ) ENGINE=MyISAM

Następnie zostały dodane rekordy (polu treść został wpisany tekst zawierający słowo artykul)

Po wykonaniu polecenia
  1. SELECT * FROM Artykuly
  2. WHERE MATCH (Tytul,Tresc) AGAINST("artykul")

baza nie zwraca wyników.

Dodam, że po zastosowaniu
  1. SELECT * FROM Artykuly WHERE tytul LIKE "%artykul%"

baza zwraca wyniki prawidłowo
wookieb
Słowo nie zostanie wyszukane jeżeli występuję we więcej niż 50% wszystkich rekordów tabeli. Dodaje kolejne 2 rekordy nie związane ze słowem "artykuł" a będzie OK
lepikon
Cytat(wookieb @ 10.03.2011, 12:08:25 ) *
Słowo nie zostanie wyszukane jeżeli występuję we więcej niż 50% wszystkich rekordów tabeli. Dodaje kolejne 2 rekordy nie związane ze słowem "artykuł" a będzie OK

To w takim układzie wyniki będą fałszywe?
thek
Niestety wookieb ma rację. jednym z ograniczeń MATCH AGAINST jest częstotliwość występowania słowa, ale są nim także za krótkie wyrazy (domyślnie musi być podany 3 lub 4 literowy). W takich wypadkach masz zafałszowany wynik i konieczne jest sprawdzenie dodatkowe z użyciem LIKE. Dopiero brak wyników w tym wypadku pozwala dość jednoznacznie stwierdzić, że nie ma nic w bazie na ten temat. Niestety taki wpływ na wyszukiwanie maja bardzo popularne frazy. Zapoznaj się z algorytmem wyszukiwania bazy a sam zobaczysz jak to działa "od kuchni". Brane jest wiele czynników pod uwagę przy określaniu trafności.
lepikon
Dziękuję za wyjaśnienia. Temat uważam za zamknięty.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.