Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]brak wyników wyszukiwania przy użyciu MATCH() AGAINST()
lepikon
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 10.03.2011

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.
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: 11.10.2025 - 04:13