mongodb sorrendezés - ékezet
Kedves fórumozók!
Most ismerkedem a mongodb -vel, és egész gyorsan feltűnt, hogy nincs megoldva benne a a megfelelő sorrendezés. Az ékezetes betűket, a kisbetűket nem a megfelelő helyre rakja. Gondolom ismerős.
A kérdésem az lenne, hogy tudtok erre megoldást (én sajnos nem találtam), nem szeretném php-vel a 10.000 terméket sorrendezni, szimpi lenne, ha megcsinálná a mango :)
előre is köszönöm az ötleteket.
■ Most ismerkedem a mongodb -vel, és egész gyorsan feltűnt, hogy nincs megoldva benne a a megfelelő sorrendezés. Az ékezetes betűket, a kisbetűket nem a megfelelő helyre rakja. Gondolom ismerős.
A kérdésem az lenne, hogy tudtok erre megoldást (én sajnos nem találtam), nem szeretném php-vel a 10.000 terméket sorrendezni, szimpi lenne, ha megcsinálná a mango :)
előre is köszönöm az ötleteket.
Szervusz, Az utánam szólók
Az utánam szólók majd kijavítanak ha tévedek, de a doksijából kiindulva, most ennyit tud a mongo. A kis/nagybetű problémára vannak olyan "megoldások", hogy egy plusz mezőben - amire rendezel - legyártod a full kisbetűs verzióját mindennek, illetve az aggregation framework-kel $toLower-t használva megspórolhatod a plusz mezőt, kérdés, hogy mennyire lesz lassú a cucc.
Az ékezetes betűkre is gondolom hasonló megoldást ajánlanának, én még nem találkoztam olyan funkcióval - mongo af-en belül - ami kitakarítja az ékezetes betűket a szövegekből, szóval itt elképzelhető, hogy erre tényleg plusz mező kell, és ha már idáig fajul a dolog, akkor gondolom érdemes egyből kisbetűre is alakítani a szövegeket.
Nem igazán értek a
Igen, sajnos
Hasonló
De azért ez csúnyán favágó módszer. Sok olyan oszlop van, amit ékezetes, és sorrendezni kell.
Reméltem, hogy esetleg valaki észrevett / talált valamit már, amit én nem. :(
Miért kéne a kapcsos zárójel?
A fentiek egyáltalán nem
A személyes véleményem azonban az, hogy az a-á és e-é párokban a megkülönböztetés hiánya hiba, ugyanis a félrevezető ékezethasználat ellenére a két pár négy különböző fonémát jelöl, az a-á és e-é ugyanolyan viszonyban állnak, mint az o-ö és u-ü. A magam részéről tehát ezeket megkülönböztetném a sorba rendezéskor, mert így intuitív.
Szerintem én is ugyanezt
Bocs, erősen fogalmaztam,
Maga az algoritmus persze bonyolultabb, ahogy lejjebb írtam.
A legjobb, amit tehetsz az
Vigyázz, ha valóban a magyar helyesírás szabályai alapján szeretnéd betűrendbe sorolni a szavakat, akkor szükséged lesz egy szótárra, hogy meg tudd különböztetni az egymás mellé kerülő egyjegyű és a magukban álló többjegyű (és az egymás mellé kerülő egyjegyű és többjegyű) betűket egymástól!
Ha ez alapján eldöntötted, hogy pontosan milyen betűket tartalmaz a szó, akkor a többjegyű mássalhangzók hosszú alakját ki kell bontsd (ho[ssz]ú → ho[sz][sz]ú). Miután elvégezted a betűnkénti megfeleltetést, ha több szavas kifejezéseket is tárolsz, azokból töröld a szóközöket, mert azok nem számítanak a besoroláskor.
A magyar ábécé 40 betűt tartalmaz a kis- és a nagybetűket nem megkülönböztetve, ha szükséges, ezt a sorba rendezéskor kiegészítheted az idegen q, x, y és w betűkkel. Ha a szabályok szerint jársz el, akkor összesen ennyi különböző kódra lesz szükséged, és nem tudsz csak egyszerű bináris összehasonlítást végezni a megjelenítéskor, mert habár a rövid-hosszú párok önmagukban nem különböztetik meg a szavakat a rendezéskor, azonban ha csak magánhangzók hosszában tér el két szó, akkor a rövid magánhangzót tartalmazó előbbre kerül a sorban, így tehát a listázáskor meg kell vizsgáld az adatbázistól visszakapott eredményt, és azokban az esetekben, ahol kell, felcseréld a csak a hosszokban eltérő szavakat.
Ha úgy döntesz, hogy eltérsz a szabályzattól, és az egyébként intuitív megközelítésd választod, akkor megkülönböztetheted az összes magánhangzót egymástól, és egy egyszerű bináris rendezéssel megkapod az adatbázistól a kész adatokat.
Köszönöm
Igazából nem sikerült véglegesen meggyőznöm magamat arról, hogy helyes-e befoltozni a hibát. Rágódom még, hogy mongodb, vagy inkább mysql mondjuk egy RedBeanPHP vel. (egyébként egy "normál" webáruházas, cms-es weboldal programozásáról van szó).
felesleges