MySQL Fulltext-searches

Plaats reactie
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Heeft er iemand ervaring met fulltext-searches in MySQL ?

Ik heb een tabel:

Code: Selecteer alles

CREATE TABLE video (
  id int(11) NOT NULL auto_increment,
  title char(255) NOT NULL default '',
  year char(4) NOT NULL default '',
  imdb_id char(10) default NULL,
  imdb_score char(4) default NULL,
  length int(11) default '0',
  PRIMARY KEY  (id),
  FULLTEXT KEY title (title,imdb_id)
) TYPE=MyISAM;


En daar zet ik gegevens in.

Vervolgens voer ik deze query uit:

Code: Selecteer alles

SELECT * FROM video WHERE MATCH (title,imdb_id) AGAINST ('test') ORDER BY title ASC; 


Ik krijg geen error, maar ook geen resultaat.

Als ik hetzelfde in een 'like' expressie schrijf werkt hij wel:

Code: Selecteer alles

SELECT * FROM video WHERE title LIKE '%test%' ORDER BY title ASC;


Enig idee wat ik fout doe? Ik neem die imdb_id er al bij omdat een fulltext-search op blijkbaar meer dan 1 kolom moet gebeuren.
Betreffende info op http://www.mysql.com/doc/en/Fulltext_Search.html

Alvast bedankt voor ideetjes...
Gebruikersavatar
Erik
Elite Poster
Elite Poster
Berichten: 1321
Lid geworden op: 15 sep 2002, 02:46
Uitgedeelde bedankjes: 2 keer
Bedankt: 18 keer

meon,

uw SQL code is niet correct .........

Code: Selecteer alles

CREATE TABLE video ( 
  id int(11) NOT NULL auto_increment,
  title char(255) NOT NULL default '',
  year char(4) NOT NULL default '',
  imdb_id char(10) default NULL,
  imdb_score char(4) default NULL,
  length int(11) default '0',
  PRIMARY KEY  (id),
  FULLTEXT KEY title (title,imdb_id)
) TYPE=MyISAM;
 


moet zijn

Code: Selecteer alles

CREATE TABLE video ( 
  id int(11) NOT NULL auto_increment,
  title char(255) NOT NULL default '',
  year char(4) NOT NULL default '',
  imdb_id char(10) default NULL,
  imdb_score char(4) default NULL,
  length int(11) default '0',
  PRIMARY KEY  (id),
  FULLTEXT KEY title (title,imdb_id)  TYPE=MyISAM
);


ook vanuit php moet je eert met de database server verbiden voor je een query kan uitvoeren ....

Code: Selecteer alles

<?php
$username='root';
$password='password';
$db='videos';
$host='localhost';
mysql_connect($host,$username,$password);
mysql_select_db($db);
$query="SELECT * FROM video WHERE title LIKE '%test%' ORDER BY title ASC";
mysql_query($query);
// en zo verder .........
?>


voor alle veiligheid bouw je best foutencontrole in

Code: Selecteer alles

mysql_connect($host,$username,password) or die (mysql_error());


waarschijnlijk is er wel een error maar ge hebt de weergave van error uitgeschakeld in php.ini ?

display_errors = on ? of iets gelijkaardigs

greetz

Erik

Edited by The Oddity
Erik, just fixed your bbcode. Replaced quote-tags with code-tags.
Registered Linux user #286313
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Geen schrik hebben, ik heb een config-file, een functions-file, een connection-file e.d. (ik ben ondertussen al effe met mysql/php bezig hoor ;)

En nee, de create-query was wel degelijk juist: Type moet NA het sluiten haakje

Ik test m'n query's trouwens in phpMyAdmin (2.3.3pl1) dus daar zie ik zowieso de errors.

Het probleem moet dus ergens anders liggen, ik krijg het niet gedaan.
Wat ik zou moeten kunnen is in boolean mode zoeken, maar dan krijg ik een error, ik draai namelijk MySQL 3.23.53-max-nt en de boolean mode wordt pas ondersteund vanaf MySQL 4.0.1 ...
The Oddity
Elite Poster
Elite Poster
Berichten: 5008
Lid geworden op: 15 sep 2002, 17:58
Locatie: Belgium, Ghent
Contacteer:

hmm, dan zou ik je aanraden, de nieuwe mysql te downloaden en te installeren, is gratis en is toch niet zo héél veel werk? oude eraf, nieuwe erop...zal je veel werk maybe besparen.
I love it when a plan comes together!
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Ik installeer pas als MySQL 4 een stable versie is. Voorlopig is dat nog maar een gamma-release...

Op een testserver heb ik daar minder problemen mee, maar voor een productieserver... Ik heb het voorlopig met een gewone like-statement opgelost...

Evenwel toch vreemd dat het niet werkt. Het voorbeeld dat in de manual staat werkt echter wél. Ik snap niet wat ik fout doe. Ik denk dat ik gewoon te weinig data in een veld heb steken om te kunnen zoeken...
Plaats reactie

Terug naar “Development”