Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nazwa kolumny "desc", problem z FULLTEXT
Forum PHP.pl > Forum > Bazy danych > MySQL
szaku¶
Oj tak, więc - żeby się nie rozpisywać;

Kod
SELECT * FROM files WHERE MATCH (name, adress, desc) AGAINST ('knytt stories')


zwraca błąd

Kod
#1064 - Something is wrong in your syntax obok 'desc) AGAINST ('knytt stories') LIMIT 0, 30' w linii 1


(btw.: "syntax obok... w linii 1" mnie zmiażdżyło smile.gif No ale to tylko phpMyAdmin)

Chyba traktuje to jako argument do sortowania - nie mam zielonego pojęcia, dlaczego. No dobra, cenna lekcja - w MySQL lepiej nie przesadzać z nazwami. Ale jak usuwam z zapytania desc...

Kod
#1191 - Can't find FULLTEXT index matching the column list


Indeksy FULLTEXT są na pewno, sprawdziłem to milion razy, a wynik powinno znaleźć. MySQL 3.23.49, PHP 4, o ile to w ogóle ma jakiekolwiek znaczenie. Macie jakiś pomysł? Rezultatem oczywiście ma być wyszukiwanie pełnotekstowe więc SELECT * FROM files WHERE [...] definitywnie odpada. Proszę o pomoc!

Serdecznie pozdrawiam,

szakuś

Acha, oczywiście wszystko, co przeszukujemy to VARCHAR.
john_doe
dlaczego odpada select * from xxx where cos like '%text%'

questionmark.gif
artega
szaku¶ jeżeli nazwa kolumny pokrywa się ze słowem kluczowym zastosuj znak `
  1. SELECT * FROM files WHERE MATCH (`name`, `adress`, `desc`) AGAINST ('knytt stories')

przydałby się też odpowiedni bbcode winksmiley.jpg
szaku¶
john_doe: bo tak =D

artega: dobra, dzięki, z tym sobie już poradziłem. tak czy inaczej, jest kolejny problem. Otóż:

Struktura tabeli files:

  1. CREATE TABLE `files` (
  2. `downloadname` varchar(255) NOT NULL DEFAULT '',
  3. `filename` varchar(255) NOT NULL DEFAULT '',
  4. `description` varchar(255) NOT NULL DEFAULT 'Brak opisu',
  5. `hits` int(11) NOT NULL DEFAULT '0',
  6. `id` int(11) NOT NULL DEFAULT '0',
  7. `keywords` varchar(255) NOT NULL DEFAULT '',
  8. FULLTEXT KEY `FULLTEXT` (`downloadname`,`filename`,`description`)
  9. ) TYPE=MyISAM;
  10.  
  11. INSERT INTO `files` VALUES ('Supaplex', 'supaplex.rar', 'sum kinda puzzle game dat i like so much, bro.', 0, 1, '');
  12. INSERT INTO `files` VALUES ('Knytt Stories by Nifflas', 'knytt_stories.rar', 'dis one is mmf2 made patform game, dude', 0, 2, '');


Zapytanie:

  1. SELECT * FROM files WHERE match (downloadname, filename, description) against('knytt')


Nie zwraca żadnego wyniku - no a chyba powinno. A jak widzicie, w tabeli jest co ma być. Jak popełniam jakiś kuriozalny, durny błąd - nie bijcie, z PHP+MySQL mam styczność od niedawna(wcześniej tylko M$), manuala jakoś przełknąłem i teraz coś kombinuję.

Z góry dzięki

szakuś
artega
Brak wyników przez wyszukiwanie pełnotekstowe to częsty problem kiedy niedoczyta się manuala. Tutaj wyja¶niłem już co i jak smile.gif
W twoim przypadku słowo knytt jest popularne ponieważ występuje w 50% rekordach.
szaku¶
Dzięki snitch.gif A tego progu nie da się zmienić?
artega
Cytat
A tego progu nie da się zmienić

Jeżeli moja wiedza mnie nie myli to... nie można zmienić tego progu nie ingerując w kod źródłowy MySQL. Dla pewności możesz zapytać google.
Edit
Z ciekawości odświeżyłem sobie pamięć. Według manuala wymagane jest by zmienić linie
Kod
#define GWS_IN_USE GWS_PROB

na
Kod
#define GWS_IN_USE GWS_FREQ

w pliku myisam/ftdefs.h by zniwelować efekt wymaganego produ.
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.