login  Naam:   Wachtwoord: 
Registreer je!
 Forum

fulltext search probleem

Offline foxie - 19/03/2005 22:28
Avatar van foxieNieuw lid Ik zou een fulltekst search moeten doen op een tabel, dit lukt maar toch is er een probleem dat opduikt als ik iets wil zoeken met een wildchard (*)

Dit is mijn tabel

---------------
| tblBomen |
---------------
| Dennenboom |
---------------
| Kastanjeboom|
---------------
| Sparrenboom |
---------------
| Kerstboom |
---------------
| Eik |
---------------
| Beuk |
---------------
| Populier |
---------------
| Mast |
---------------
| Den |
---------------

Wanneer ik nu zoek op bv spar* dan geeft hij als resultaat Sparrenboom. Dit lukt dus maar als ik bijv *boom opgeef als resultaat dan zou ik dus een uitdraai willen krijgen van alle bomen die eindigen op boom. Maar dan komt hij af met er zij geen resultaten gevonden.

Zoek ik op de verkeerde zoekterm? of moet je om dat te bereiken een andere zoekterm gebruiken?

IN de tutorial daarover op deze site staat ook dit bij: Als het zoekterm in meer dan 50% van de resultaten voorkomt, dan is het resultaat 0 rows, je moet dan specifieker zoeken.

9 antwoorden

Gesponsorde links
Offline jasperken - 19/03/2005 23:01
Avatar van jasperken PHP interesse hmm da's duswel een probleem ik stel voor dat je deze tabel uit je database haalt en in een array duwt, en dan eens de functie gebruikt in_array gebruikt, mee informatie over deze functie vind je op: http://be.php.net/in_array zelf gebruik ik ze maar zelden maar soms kan ze wel van pas komen 
Grtz
Offline numlockrond - 19/03/2005 23:12 (laatste wijziging 19/03/2005 23:13)
Avatar van numlockrond Onbekend
Citaat:
IN de tutorial daarover op deze site staat ook dit bij: Als het zoekterm in meer dan 50% van de resultaten voorkomt, dan is het resultaat 0 rows, je moet dan specifieker zoeken.
Dat is idd het grote probleem bij mysql. Je weet ook niet of 0 rows betekent dat er echt niks gevonden is of dat er teveel gevonden is.

Dit zou idd de oorzaak kunnen zijn, alhoewel 4 van de 9 rijen eindigen op boom en dat is dus 44%, maar van mysql kun je wel zoiets verwachten.
Offline foxie - 20/03/2005 08:22
Avatar van foxie Nieuw lid Ja maar het is een fictief voorbeeld in het echt zoek ik in een tabel met meer dan 3000 records in en daar komt het te zoeken resultaat maar op 50 records voor om het zo te zeggen zeker niet de helft of 44%:s
Offline Metalhead - 20/03/2005 11:10
Avatar van Metalhead HTML gevorderde wat is je query?

ik neem aan dat het zoiets als
  1. SELECT * FROM tabel WHERE field LIKE '%boom';
is?
Offline numlockrond - 20/03/2005 11:15
Avatar van numlockrond Onbekend
Citaat:
wat is je query?

ik neem aan dat het zoiets als
[..code..]
is?
Komop, het is al kwart over 11, wakker worden!
Offline Thomas - 20/03/2005 13:18 (laatste wijziging 20/03/2005 13:19)
Avatar van Thomas Moderator Je moet dan gewoon "boom" invullen (zonder quotes, want anders zoekt ie letterlijk op "boom", en niets meer).

Bij de operators van fulltext-searches staat het volgende:
*
An asterisk is the truncation operator. Unlike the other operators, it should be appended to the word, not prepended.

Voor zover ik het begrijp kun je dus * niet als "willekeurig voorvoegsel" gebruiken, wel als achtervoegsel. Ik zie ook geen andere operatoren die zoiets wel kunnen, dus als je het gewoon met "boom" probeert 'werkt' het denk ik wel (het levert alleen teveel resultaten op dus je zult meer zoektermen moeten opgeven dan enkel dat, en geef zelf toe: "boom" is niet erg specifiek eh ).
Offline foxie - 21/03/2005 15:51
Avatar van foxie Nieuw lid Ja heb gaat hier dan ook maar over een voorbeeld met bomen, in de praktijk gaat het over echte adresgegevens, maar een * ervoor zetten gaat wel ik heb het net getest.

Ik begrijp het zelf ook niet zo geheel goed.

Mijn query is bijvoorbeeld:

SELECT * FROM tblkaartjes k WHERE MATCH(contactpersoon) AGAINST('*smith' IN BOOLEAN MODE) AND hoortby =0

Als je dit zou uitvoeren zou ik desmith als resultaat willen zien dit toont hij echter niet, het * ervoor zetten gat zeker wel.

Nu zou ik deze geheel kunnen gaan vervangen door een LIKE query te gaan doen (met str_replace alle zoekoperatoren verwijderen (+,-,<,>....) maar dan duikt het probleem op als een gebruiker bv een + operator heeft gebruikt omdat hij wil enkel resultaten wil zien waarin die 2 waarden voorkomen, dat dat dan wel verloren gaat.


Ik neem aan dat je met LIKE niet met die operatoren kunt werken. Hoe zou ik het kunnen oplossen ? dat hij wel resultaten vind?
Offline Thomas - 21/03/2005 15:55 (laatste wijziging 21/03/2005 15:55)
Avatar van Thomas Moderator Er stond 'should be used as ...', maar het kan wel...
Meer zoektermen toevoegen lijkt mij de enige oplossing - zo werken fulltext searches nu eenmaal.
Werkt IN BOOLEAN MODE bij jou ? Is MySQL nieuw genoeg ?
Offline foxie - 21/03/2005 16:13
Avatar van foxie Nieuw lid In boolean mode is toch voor die +,-,< > te gebruiken hé, ja dat werkt. maar als je als gebruiker enkel maar die gegevens wil hebben dan moet je er niks extra aan toe gaan voegen hé.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.209s