I reject your reality and substitute my own!
Full text search is waar jij op doelt, althans gedeeltelijk: de beste matches krijgen de hoogste prioriteit.
http://dev.mysql.com/doc/mysql/en/fulltext-search.html
http://dev.mysql.com/doc/mysql/en/fulltext-search.html
[ Voor 27% gewijzigd door sjroorda op 04-04-2005 15:15 ]
SELECT * FROM Kleur WHERE MATCH (KleurCode) AGAINST ('a');
en ik heb tonnen a's in Kleurcode zitten, en ik heb een fulltext index op kleurcode.... maar hij weigert 1 row terug te geven....
en ik heb tonnen a's in Kleurcode zitten, en ik heb een fulltext index op kleurcode.... maar hij weigert 1 row terug te geven....
I reject your reality and substitute my own!
Even lullige wedervraag: hij heeft toch gelijk? Alle resultaten matchen toch 100% met je query, en de rest 0%?mkanon schreef op maandag 04 april 2005 @ 15:13:
Nu doe ik Select * Where Code Like '%a%'
Nu zal hij de volgende volgorde aanhouden 1,3,4,5,6,7,8 Maar ik wil dat waar a 100% matched boven aan komen en daarna waar a op het eerste plek staat. dus : 6,5,1, etc......
Kan dit ?
Je kunt daarnaast overigens wel wat met de SOUNDEX functie bereiken, alhoewel de MSSQL-functie DIFFERENCE dan weer helaas geen tegenhanger in MySQL heeft.
Ik denk dat de overeenkomst tussen een kleurcode (6 letters) en de enkele 'a' te klein is om een positief resultaat terug te geven.
Maar ik denk sowieso dat het met kleurcodes niet op deze manier gaat werken: 00AA00 is bijvoorbeeld een 100% andere kleur dan 0000AA, terwijl in principe een match against 'a' voor beide evenveel terug moet geven (net als bij A00A00). Een ander algoritme lijkt me nuttiger!
Maar ik denk sowieso dat het met kleurcodes niet op deze manier gaat werken: 00AA00 is bijvoorbeeld een 100% andere kleur dan 0000AA, terwijl in principe een match against 'a' voor beide evenveel terug moet geven (net als bij A00A00). Een ander algoritme lijkt me nuttiger!
Dit staat in de manual:
Some words are ignored in full-text searches:
* Any word that is too short is ignored. The default minimum length of words that are found by full-text searches is four characters.
* Words in the stopword list are ignored. A stopword is a word such as ``the'' or ``some'' that is so common that it is considered to have zero semantic value. There is a built-in stopword list.
Kleurcodes zijn opgebouwt uit RGB neem ik aan, waarom splits je dat niet in 3 kolommen op, dat maakt het querieen een stuk precieser lijkt me, want dan kan je gewoon orderen aan de hand van het verschil.
De kleurcodes zijn tot max 8 lang en minimaal 2 lang, en er zit compleet geen structuur in, soms 8 cijfers soms letters liggende streepjes... etc...
I reject your reality and substitute my own!
Je moet minimaal 3 tekens in een woord hebben voor de FULLTEXT om te werken. Zie anders de fulltext documetatie: [google=fulltext site:mysql.com].
Dus wat is dan de oplossing voor mijn probleem... Opzich mag het de volgorde ook zijn dan eerst de Absolute matches komen... en dan de LIKE. (kan iedereen mijn gebrabbel nog volgen... )
dus zeg maar eerst = en dan like %%...
Het probleem wat ik gewoon heb is dat als ik in mijn database zoek dat ik dan 9 van de tien keer een waarde terug krijg waar het gedeeltelijk inzit terwijl de waarde zelf ook 100% voorkomt....
dus zeg maar eerst = en dan like %%...
Het probleem wat ik gewoon heb is dat als ik in mijn database zoek dat ik dan 9 van de tien keer een waarde terug krijg waar het gedeeltelijk inzit terwijl de waarde zelf ook 100% voorkomt....
I reject your reality and substitute my own!
Dan doe je er een order by op, die sorteert op de lengte van je zoekstring / lengte van de string in het veld.
Dat moet aardig goed gaan
Dat moet aardig goed gaan
Order by wat ? als ik order bij Kleurcode en ik zoek op %a% krijg ik eerst alles met getallen er voor.... terwijl er misschien een a45 bestaat...
I reject your reality and substitute my own!
Ben je niet gewoon dingen in de database aan het doen die daar absoluut niet thuishoren?
Nee, ik zoek volgens mij gewoon een orderby die niet bestaat, ik probeer hier m'n ongelijk te zoeken....
I reject your reality and substitute my own!
Tip: wellicht bestaat ie niet omdat je dingen in de database aan het doen bent die daar absoluut niet thuishorenmkanon schreef op maandag 04 april 2005 @ 17:25:
Nee, ik zoek volgens mij gewoon een orderby die niet bestaat, ik probeer hier m'n ongelijk te zoeken....
Nog een tip van mij: Als de data in je database een puinhoop is dan dien je die eerst te ordenen, tjah nogmaals een pleidooi om dataintegriteit ALTIJD vanuit je database af te dwingen en NOOIT vanuit een applicatie.
mkanon schreef op maandag 04 april 2005 @ 16:44:
Order by wat ? als ik order bij Kleurcode en ik zoek op %a% krijg ik eerst alles met getallen er voor.... terwijl er misschien een a45 bestaat...
code:
1
| Order by ( CHAR_LENGTH(keyword) / CHAR_LENGTH(code) ) |
Als je dan zoekt op a krijg je de volgende resultset :
code:
1
2
3
4
5
| a 3a a876 8787a878 ssdfsffsfaaasfds |
En dat zocht ik nou !!!!! er is wel een oplossing
Dank u!
I reject your reality and substitute my own!
Wat niet wegneemt dat je data een puinhoop is naar mij idee. Ik zou al eerste er eens voor zorgen dat al je data uit 6 chars bestaat (en het dus een kleur code is) (streepjes eruit, aanvullen van 3 char kleuren enzo)
openkat.nl al gezien?
Misschien dat je eerst even moet weten wat voor data het is voor dat je een oordeel velt over de dan wel of niet een puinhoop van mijn data.killercow schreef op dinsdag 05 april 2005 @ 11:45:
Wat niet wegneemt dat je data een puinhoop is naar mij idee. Ik zou al eerste er eens voor zorgen dat al je data uit 6 chars bestaat (en het dus een kleur code is) (streepjes eruit, aanvullen van 3 char kleuren enzo)
De kleurcodes zijn gedocumenteerde auto kleuren, deze worden uit een excel bestand geparsd. er moet ook weer exact gezocht kunnen worden op die kleurcodes. dus incl - etc. aangezien geen merk gelijke lengtes hanteerd kan ik dus ook niks aanvullen!
I reject your reality and substitute my own!
En van die kleuren zijn er geen conversie tabellen? dus dat je er cmyk van maakt oid?mkanon schreef op dinsdag 05 april 2005 @ 13:33:
[...]
Misschien dat je eerst even moet weten wat voor data het is voor dat je een oordeel velt over de dan wel of niet een puinhoop van mijn data.
De kleurcodes zijn gedocumenteerde auto kleuren, deze worden uit een excel bestand geparsd. er moet ook weer exact gezocht kunnen worden op die kleurcodes. dus incl - etc. aangezien geen merk gelijke lengtes hanteerd kan ik dus ook niks aanvullen!
Als ieder merk wel zijn eigen opmaak/techniek gebruikt om dingen op te slaan, en de kleuren dus niet met elkaar corresponderen heeft het dan zin om ze in een een database te gooien? je zoekt dan toch altijd naar kleur x van merk y? (en die kun je dan toch per merk dan beter in een lose tabel zetten?) (of igg je select per merk doen?)
Naja anyway, ik kan hier wel de wijsneus uithangen, maar jij weet vast wel wat je doet
openkat.nl al gezien?
Pagina: 1