Avatar billede oasen Nybegynder
26. juni 2003 - 12:32 Der er 13 kommentarer og
3 løsninger

FullText-søgning

Hvad er forklaringen/løsningen på, at FullText-søgning i MySQL 3.23 ikke finder "xxx yyy", når der netop er en kolonnne med den værdi?

Det er ikke fordi, den optræder i flere end 50% af posterne - kun én.

Jeg ved, der er noget, der hedder Contains i MySQL. Hvordan bruges det?
Avatar billede rodehoved Nybegynder
26. juni 2003 - 12:44 #1
Det ville hjælpe at have den den query streng du bruger
Avatar billede oasen Nybegynder
26. juni 2003 - 12:53 #2
Select Felt From Tabel Where Match(Felt) Against('xxx yyy')
Avatar billede rodehoved Nybegynder
26. juni 2003 - 13:09 #3
hvorfor ikke bare bruge almindelig standard SQL?
select Felt from Tabel where Felt = 'xxx yyy'
Avatar billede oasen Nybegynder
26. juni 2003 - 13:11 #4
Fordi man også skal kunne søge på "yyy xxx", og desuden synes jeg, det er smart, at de returneres efter relevans.
Avatar billede rodehoved Nybegynder
26. juni 2003 - 13:17 #5
hvor skal du bruge den query?
Avatar billede rodehoved Nybegynder
26. juni 2003 - 13:27 #6
Hvis du kigger lidt længe nok på MySQL's hjemmeside, finder du endelig langt om længe frem til svaret.
Det du skal gøre for at kunne lave en søgning med Match Against, er at du skal "indexere" dine data, for at det kan lade sig gøre...

Det vil sige at du i din create table skal lave en command der hedder:

FULLTEXT (Felt)

Henviser her til:
http://www.mysql.com/doc/en/Fulltext_Search.html
Avatar billede angam Nybegynder
26. juni 2003 - 13:29 #7
Virker dette ikke kun på String felter (og altså ikke blob, integer, datetime etc.)?
Avatar billede rodehoved Nybegynder
26. juni 2003 - 13:35 #8
Så vidt jeg kan læse mig frem til, bruges det kun til tekst-felter
Avatar billede oasen Nybegynder
26. juni 2003 - 14:59 #9
Ja, jeg har da fulltext-indekseret felterne, ellers ville jeg bare få en fejl.

Hvis du f.eks. søger på "Peter Rasmussen", skal det give samme resultat, som hvis du skriver "Rasmussen Peter"
Avatar billede morw Nybegynder
26. juni 2003 - 15:49 #10
Ord skal være over 3 tegn før der søges som standard
Avatar billede rodehoved Nybegynder
26. juni 2003 - 16:33 #11
Det er heller ikke alle tabel-typer der understøtter fulltext indexering
Avatar billede oasen Nybegynder
26. juni 2003 - 23:57 #12
Hvad er det nu, der skal tilføjes i my.ini for at ændre min.længden af de ord, der indekseres?
Avatar billede morw Nybegynder
27. juni 2003 - 09:08 #13
ft_min_word_len
Avatar billede oasen Nybegynder
28. juni 2003 - 06:01 #14
Er det så ikke:

Set variable = ft_min_word_len = 1

?
Avatar billede jim.west Nybegynder
29. juni 2003 - 23:58 #15
Denne linje burde virke:
select felt from tabel where felt like '%xxx yyy%';

Du kan så altid sætte en variabel ind i stedet for, men det ved du vel ;)
Avatar billede oasen Nybegynder
02. juli 2003 - 22:52 #16
Ehh... ja, men det er jo bare alm. søgning med Like-operatoren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester