Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Fulltext nie działa
Forum PHP.pl > Forum > Bazy danych > MySQL
lukasamd
Witam,
mam w bazie tabelę o takiej oto strukturze:

  1. CREATE TABLE IF NOT EXISTS `recenzje` (
  2. `recenzja_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `recenzja_gra` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  4. `recenzja_tytul` varchar(200) NOT NULL DEFAULT '',
  5. `recenzja_text` text NOT NULL,
  6. `recenzja_url` varchar(200) NOT NULL DEFAULT '',
  7. PRIMARY KEY (`recenzja_id`),
  8. KEY `recenzja_url` (`recenzja_url`),
  9. FULLTEXT KEY `recenzja_text` (`recenzja_text`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


Dodałem dla testu około 10 artykułów, próbowałem używać wyszukiwania pełnotekstowego w wypadku słowa "crysis" (występowało w 2 artykułach) i oto efekt:

  1. SELECT recenzja_tytul FROM recenzje WHERE MATCH (recenzja_text) AGAINST ('crysis');

Wyników: 0


  1. SELECT recenzja_tytul FROM recenzje WHERE recenzja_text LIKE '%crysis%';

Wyników: 2


Co jest? Niby wszystko ok, a jednak nie znajduje niczego. Czytałem zaś, że stosowanie LIKE w takim wypadku = katowanie bazy, mam wszystko na MySQL 5 i MyISAM więc wolałem korzystać z szukania pełnotekstowego.
blooregard
  1. CREATE TABLE IF NOT EXISTS `recenzje` (
  2. `recenzja_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `recenzja_gra` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  4. `recenzja_tytul` varchar(200) NOT NULL DEFAULT '',
  5. [b]FULLTEXT `recenzja_text` text NOT NULL,[/b]
  6. `recenzja_url` varchar(200) NOT NULL DEFAULT '',
  7. PRIMARY KEY (`recenzja_id`),
  8. KEY `recenzja_url` (`recenzja_url`),
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
phpion
Cytat(lukasamd @ 2.02.2009, 19:06:15 ) *
Dodałem dla testu około 10 artykułów

Problem zapewne leży w zbyt małej liczbie rekordów. Nie pamiętam teraz dokładnie dlaczego tak się dzieje, ale związane jest to z obliczaniem trafności: przy małej liczbie danych wyszukiwanie pełnotekstowe nic nie zwraca. Wrzuć więcej danych (z 1000?) i wtedy sprawdź. Do wrzucanych danych napisz sobie jakiś generator.
Kihol
Załóż index fulltext na odpowiednią kolumnę!
phpion
Cytat(Kihol @ 3.02.2009, 12:06:34 ) *
Załóż index fulltext na odpowiednią kolumnę!

worriedsmiley.gif zamiast moralizować czytaj dokładniej źródła...
lukasamd
Dodałem do bazy 2 spore recenzje i.... działa! Czyli brakowało mu danych po prostu.

Mam jednak pewne pytanie - co mam zrobić, jeżeli będę chciał wyszukiwać oddzielnie dla tytułu (recenzja_tytul) a oddzielnie dla tekstu recenzji (recenzja_text)? Jeżeli zrobię index:

  1. FULLTEXT (recenzja_tytul, recenzja_text)


to w zapytanie muszę użyć takiego samego wpisu = przeszuka mi zarówno jedno jak i drugie pole. Co lepiej zrobić:

a) 2x FULLTEXT (można w ogóle?)
b) FULLTEXT dla tekstu recenzji, LIKE dla tytułu.

Zdaję się na Wasze doświadczenie.
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.