Gå til innhold

Fulltext-søk i MySQL-tabeller


Anbefalte innlegg

I databasen min har jeg en tabell med sider, som har følgende struktur:

CREATE TABLE `pages` (
 `id` int(4) NOT NULL auto_increment,
 `date` date NOT NULL default '0000-00-00',
 `path` varchar(60) NOT NULL default '',
 `title` varchar(120) NOT NULL default '',
 `author` varchar(30) NOT NULL default '',
 `ingress` text NOT NULL,
 `subcat` enum('php','mysql','apache','html','css','generelt') NOT NULL default 'php',
 `cat` enum('guide','kodegalleri','artikkel') NOT NULL default 'guide',
 `orig_art` varchar(80) NOT NULL default '',
 `url_title` varchar(30) NOT NULL default '',
 PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=20 ;

 

Jeg har lyst til å legge til mulighet for fulltext-søk i denne tabellen, i kolonnene 'ingress' og 'title' (mest fordi jeg er nysgjerrig på hvordan dette funker). Er det noen der ute som kan gi meg en enkel introduksjon i hvordan man utfører dette?

 

På forhånd takk! :)

Lenke til kommentar
Videoannonse
Annonse

Ok, støtte nettopp på et merkelig problem som jeg ikke finner løsningen på:

 

Jeg har en fulltext-index for kolonnene title og ingress. Jeg har flere rader der ordet "CSS" er representert i både tittelen og ingressen. Kan noen forklare meg hvorfor jeg ikke får returnert noen rader når jeg kjører denne spørringen:

SELECT *,
MATCH(title, ingress)
AGAINST('css') AS `score`
FROM `pages` WHERE MATCH(title, ingress)
AGAINST('css')
ORDER BY `score` DESC LIMIT 15

 

Hadde vært herlig om noen kunne fortelle meg hva jeg har gjort feil! :)

Lenke til kommentar

husk at du allerede har resultatet av "MATCH(title, ingress)

AGAINST('css')" i score, så ... WHERE score ORDER BY ... er bedre (unngår å gjøre matchen to ganger.

 

prøv å ta bort WHERE score og se hva du får. score har vel gjerne en verdi (av eksemplene på den foreslåtte siden vil du se at det er et tall med mange desimaler)

 

får du null i dine score's?

Lenke til kommentar

Usj, det var kjedelig. Fant en midlertidig løsning der jeg kjører OR LIKE '%$søkeord%' for både ingress og tittel. Det funker egentlig helt ok, i og med at den fortsatt utfører fulltekstsøk og returnerer relevans og sorterer etter relevans om den verdien er satt. (om det var forståelig) :)

 

Edit: hastighet er ikke et problem da denne tabellen foreløpig er en svært liten tabell.

Endret av Lokaltog
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...