[MySQL] Fulltext search op kortere woorden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers =)

Ik zit op het moment met een probleempje. Ik heb een producten tabel met daarin een kolom 'keywords' waar verschillende keywords worden opgeslagen over dat product. (merk, naam, kleur, soort etc) Deze kolom is FULLTEXT.

Nu heb ik aan de voorkant van de website een search op deze kolom (gewoon MATCH AGAINST). Enkel is het probleem dat hetzelfde - maar korter - woord niet gepakt wordt. Logisch natuurlijk, maar toch wil ik graag weten of het iets beter kan.

Ik zou bijvoorbeeld graag rijen met het keyword 'schoenen' willen vinden al zoek ik op 'schoen'. (omgekeerd zal teveel gevraagd zijn neem ik aan)

Heeft iemand enig idee hoe dit op een relatief simpele manier op te lossen is zonder alles met de hand toe te voegen? Ik heb geen toegang tot de machine dus third party software is helaas geen optie. :)

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Een (brakke) mogelijkheid is gewoon een set woorden te pakken en als je die tegenkomt er gewoon 'en' aanplakken en mee je query insturen.

Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Geef een andere minimale woordlengte op:
http://dev.mysql.com/doc/...ml#sysvar_ft_min_word_len

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Die oplossing van Cartman! heb ik ook over nagedacht, dit lijkt mij ook de enige oplossing, echter is dat wat je zegt een brakke en viese oplossing.

@ cariolive23, dat lost het probleem niet op :) Die sysvar verteld MySQL enkel welke woorden wel en niet worden meegenomen in de search (elk kleine woordje wil je ook niet meenemen in de search)

Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 02:46

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Willekeurige subfixes toevoegen is echt niet de enige oplossing.

Er zijn legio oplossingen bedacht voor het zoeken in teksten en in verzamelingen keywords. Je kan aan de hand van string-vergelijkings algoritmes je zoekopdracht uitbreiden met bestaande keywords die sterk lijken op de oorspronkelijke zoektermen. Je kan zoeken op substrings etc. etc.

Ik zou zeggen, zoek eens ergens een goede (online) informatiebron over zoektechnieken en lees je een beetje in :)

En verder zou je ook gewoon eens kunnen googlen op "MATCH AGAINST", want zo te zien ben je niet bepaald de eerste met dit probleem, zie ook het eerste resultaat: http://ep2.nl/thread-934.html

[ Voor 17% gewijzigd door Orion84 op 09-08-2010 10:52 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oke daar was ik al bang voor, dan zit het er niet anders op om de keywords te verbeteren :)

Bedankt voor de input jongens!

Edit:
Ik zal een redelijke oplossing hier plaatsen zodra ik die heb.

[ Voor 22% gewijzigd door Verwijderd op 09-08-2010 10:52 ]


Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 02:46

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Zie mijn edit, als ik die pagina goed begrijp kan je je huidige methode met een subtiele aanpassing precies laten doen wat jij wilt.

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Overigens zou ik eerder kijken naar een andere manier van indexen/zoeken maar ik begrijp dat dit geen oplossing is voor je? Ik gebruik vaak Lucene als searchengine en die werkt vrij goed.

edit: @Orion84, volgens mij heeft de TS daar niks aan, hij heeft als input het woord "schoenen" en wil daarmee het woord "schoen" vinden. Andersom had dit wel gewerkt met de link die je gepost hebt.

edit2: nm, dat was wel wat de TS zoekt, ik zat andersom te denken :)

[ Voor 43% gewijzigd door Cartman! op 09-08-2010 10:55 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmm enorm simpele en vooral logische oplossing. Schaam me hier toch een beetje voor :)
Pagina: 1