[MySQL] Fulltext search giving wrong results?

Pagina: 1
Acties:
  • 263 views sinds 30-01-2008
  • Reageer

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Hallo,

Ik ben bezig met een simpel zoek script voor mijn games database. Ik kom echter een probleem tegen met het gebruiken van mijn fulltext search opties.

Ik heb 3 records:
Qix
Splinter Cell Chaos Theory
Wacky Racers

Als ik zoek op Qix wordt er niets gevonden, zoek ik op een van de andere woorden wordt er wel altijd iets gevonden.

Dit geeft mij dus het idee dat mijn SQL query klopt.

Mijn query:
SQL:
1
select g.id as id, g.title as title, c.name as cat, p.name as pub, b.name as price, g.added as added, match(title) against('Qix' IN BOOLEAN MODE) as score from m_games g, m_cat c, m_pub p, m_price b where match(title) against('Qix' IN BOOLEAN MODE) and g.id > 0 and p.id = g.pub_id and c.id = g.cat_id and b.id = g.price_id order by g.title limit 0, 30; 


Ook heb ik Qix veranderd in Qix Cell om te kijken of Cell wel een record kon vinden, dit lukte wel.

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Verwijderd

Een fulltext zoekactie moet minimaal 4 karakters hebben, vandaar dat Qix het niet doet en Cell wel.
Het schijnt alleen niet zo makkelijk te zijn om de minimale eis van 4 karakters aan te passen.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 01-05 19:54

Bosmonster

*zucht*

Je kunt de minimale lengte eenvoudig instellen in MySQL, maar wel pas vanaf MySQL 4.1 geloof ik.

  • MaTriCX
  • Registratie: Augustus 2002
  • Laatst online: 18-07-2024
Waarom gebruik je niet "...WHERE title LIKE '%..%'..." of een subquery, daarbij heb je het probleem van een minimaal aantal karakters ook niet.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 01-05 19:54

Bosmonster

*zucht*

MaTriCX schreef op woensdag 03 augustus 2005 @ 12:40:
Waarom gebruik je niet "...WHERE title LIKE '%..%'..." of een subquery, daarbij heb je het probleem van een minimaal aantal karakters ook niet.
boolean search, performance

(gokje)

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Goed gegokt :)

Sorry, ik had dus beter moeten lezen, dan had ik geweten dat het min4 chars is.

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • Sjab-X
  • Registratie: September 2001
  • Laatst online: 03-04 19:47
Je kan ook je MySQL configuratie (my.ini) aanpassen:
code:
1
2
[mysqld]
ft_min_word_len=3

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 01-05 19:54

Bosmonster

*zucht*

Sjab-X schreef op woensdag 03 augustus 2005 @ 13:29:
Je kan ook je MySQL configuratie (my.ini) aanpassen:
code:
1
2
[mysqld]
ft_min_word_len=3
Dat zei ik ook al :P

"are available as of MySQL 4.0.0"

Het is wel MySQL 4.0 dus (niet 4.1)

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Helaas kan ik niet bij de .ini file.

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 01-05 19:54

Bosmonster

*zucht*

Parcye schreef op woensdag 03 augustus 2005 @ 13:35:
Helaas kan ik niet bij de .ini file.
Over het algemeen zal een provider er niet zo moeilijk over doen dit voor je aan te passen.

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
ik ben ook met die FULLTEXT aan het experimenteren, maar wildcards (%zoekwoord%) doen het ook niet he, of zie ik iets over het hoofd?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 01-05 19:54

Bosmonster

*zucht*

Genoil schreef op woensdag 03 augustus 2005 @ 16:16:
ik ben ook met die FULLTEXT aan het experimenteren, maar wildcards (%zoekwoord%) doen het ook niet he, of zie ik iets over het hoofd?
Nee FULLTEXT zoekt op 'full text' :) Alleen hele woorden dus.

Het is verre van ideaal, maar heeft een aantal voordelen ten opzichte van een simpele LIKE

- Je kunt sorteren op relevantie
- het is een index, waar LIKE geen index kan gebruiken. Bij een grote database blijft de FULLTEXT nog aardig snel, waar een LIKE dramatisch langzaam kan worden.

Vanaf 4.1 ondersteunt MySQL ook expansion (even zoeken in de manual) wat erg interessant kan zijn als je iets meer uit de beperkte fulltext mogelijkheden wilt halen.

Wil je betere zoekmogelijkheden, dan kun je beter andere searchengines gebruiken, zoals GoT Omega gebruikt als ik me niet vergis.

[ Voor 50% gewijzigd door Bosmonster op 03-08-2005 16:27 ]


Verwijderd

Dat is niet helemaal waar, je kan best met wildcards werken, zie : http://dev.mysql.com/doc/mysql/en/fulltext-boolean.html

ipv % kun je gebruik maken van * . Daarnaast kan je ook gebruik maken van + en - etc.
Werkt erg fijn en snel

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
ik was een beetje te vroeg met mijn vraag. werkt als een tiet die wildcards, alleen moet je * gebruiken ipv %. maar toch bedankt voor de uitleg ;)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 01-05 19:54

Bosmonster

*zucht*

Verwijderd schreef op woensdag 03 augustus 2005 @ 16:28:
Dat is niet helemaal waar, je kan best met wildcards werken, zie : http://dev.mysql.com/doc/mysql/en/fulltext-boolean.html

ipv % kun je gebruik maken van * . Daarnaast kan je ook gebruik maken van + en - etc.
Werkt erg fijn en snel
Ah das waar ook, dat is in 4.0 toegevoegd (wij gebruiken hier in de productieomgeving nog 3 en moeten dus leven met wat beperkingen :P).

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Mja tis ook weer niet helemaal wildcard. De * is de truncate operator, en werkt dus alleen aan de achterkant van een zoekwoord. zoeken op *fiets* returned dus geen bakfiets maar wel fietsbel...
Pagina: 1