Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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
Go to the top of the page
+Quote Post
lepikon
post
Post #3





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

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


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?
Go to the top of the page
+Quote Post
thek
post
Post #4





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
lepikon
post
Post #5





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

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


Dziękuję za wyjaśnienia. Temat uważam za zamknięty.
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: 23.08.2025 - 10:06