Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[MySQL] Full-text search werkt niet.*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mede tweakers.

Ik heb een probleem waar ik echt jullie hulp bij nodig heb. Ik wil namelijk een simpel Full-text search systeem schrijven. Echter gaat het niet als geplanned.

Ik heb mijn bestaande tabellen een Full-Text waarde mee gegeven aan het titel en content veld (spreekt voor zich waarom neem ik aan. :)). Maar bij het zoeken pakt hij gewoon helemaal niks. Ook als ik een wildcard invoer krijg ik geen records.

Mijn tabel ziet er als volgende uit:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `tutorials` (
  `naam` varchar(250) default NULL,
  `soort` varchar(30) default NULL,
  `content` text,
  `datum` varchar(20) default NULL,
  `beschrijving` varchar(250) default NULL,
  `image` varchar(250) default NULL,
  `userid` varchar(20) default NULL,
  `id` mediumint(10) NOT NULL auto_increment,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `naam` (`naam`,`content`)
) ENGINE=MyISAM


En de query:

SQL:
1
SELECT * FROM tutorials WHERE MATCH(naam, content) AGAINST ('PHP')


Waar ik dus wil zoeken voor (in dit geval tutorials) tutorials met PHP in de naam of content. Nu zit er zeker in 75% van de tutorials de afkorting PHP, en in de content in zeker alle tutorials.

Het rare is dat hij wel WHERE LIKE accepteerd.

Ik heb het geprobeerd in MySQL 4.1 en 5.0.

Wie kan mij helpen? :S

Alvast bedankt!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 24-11 16:50
Verwijderd schreef op woensdag 15 augustus 2007 @ 22:07:
Waar ik dus wil zoeken voor (in dit geval tutorials) tutorials met PHP in de naam of content. Nu zit er zeker in 75% van de tutorials de afkorting PHP, en in de content in zeker alle tutorials.
Alvast bedankt!
Het probleem zit 'm ook in die 75% ;-) ... De Fulltext engine van mysql heeft een optie waardoor hij niks terug geeft als iets in meer dan de helft van alle doorzochte records voorkomt.
zie oa hier
Zoeken in de 'boolean' mode heeft daar geen 'last' van

Verwijderd

Topicstarter
Bedankt voor de reactie Beetle. Ik snap nu waarom hij PHP niet zal pakken. Echter werkt het IN BOOLEAN MODE niet. Ik merk wel dat iets anders als "tutorials" wel results laat zien.

Ik gebruik nu de volgende query:
SQL:
1
SELECT * FROM tutorials WHERE MATCH(naam, content) AGAINST ('PHP' IN BOOLEAN MODE)


Iemand een idee?

  • semicolon
  • Registratie: Mei 2004
  • Niet online
Er is een default minimum length van 4 karakters, PHP zijn er 3. Dit minimum is instelbaar in de MySQL configuratie echter weet ik zo 123 de naam ervan niet meer, maar dit zal je wel verder moeten helpen met het zoeken denk ik ;)

-edit (deze staat default dus op 4):
code:
1
2
[mysqld]
ft_min_word_len=3

[ Voor 43% gewijzigd door semicolon op 15-08-2007 22:31 ]

:D/-<


Verwijderd

Topicstarter
Oh aha bedankt! Dan kunnen mensen maar niet zoeken op PHP (ook natuurlijk wel zinloos), ik heb geen toegang tot de config.

Mensen bedankt! Ik kan weer verder. :)