Autor | Zpráva | ||
---|---|---|---|
wiz Profil * |
#1 · Zasláno: 26. 11. 2011, 12:28:28
Dobrý den, potřebuji na web aplikaci, která vyhodnotí zadané informace a vrátí nejvhodnější výsledek. Například uživatel bude muset vyplnit otázky:
a, 1, Světlé barvy 2, Tmavé barvy b, 1, Teplé barvy 2, Studené barvy Pokud uživatel vybere a2, b1, tak aplikace mu vrátí "oranžová, červená, atd.", ale pokud zadá a2, b2, dostane zpět "modrá, fialová, atd". Aplikace bude obsahovat více otázek, takže potřebuji aby uživatel dostal vždy nejbližší výsledek (například pokud zadá a1, b1 a žádná světlá, teplá barva nebudá přidána, tak dostane nejbližší výsledek "oranžová". Příklad který jsem uvedl je jen popis. Děkuji |
||
BuGeR Profil |
#2 · Zasláno: 26. 11. 2011, 12:58:09
|
||
Tori Profil |
#3 · Zasláno: 26. 11. 2011, 13:04:14 · Upravil/a: Tori
wiz:
„například pokud zadá a1, b1 a žádná světlá, teplá barva nebudá přidána, tak dostane nejbližší výsledek "oranžová".“ Takže jednotlivá zadání mají různou prioritu? Podle čeho se bude rozhodovat, když není k dispozici kombinace a1+b1, jestli se má použít a2+b1 nebo a1+b2? Jinak hledáte konkrétní aplikaci, nebo chcete názor na aspoň zčásti vymyšlený způsob řešení, nebo to chcete od někoho napsat celé? Z [#1] to není moc jasné. edit: [#4] Aha, zajímavé - odkázaná stránka mi připadá spíš jako stromová struktura - na každém uzlu se rozhoduje, kterou větví se bude pokračovat, případně se (pokud větev chybí) přejde na jiný (přednastavený) uzel. Podle zmíněné procentuální shody jsem si představila spíš něco jako klíč rostlin, (100% rozlišovacích znaků ukazuje na mrkev, 82% (=neshoda barvy) na petržel apod.). (keďže nemám nápad na řešení, tak jsem to radši dopsala sem, než nový post) |
||
wiz Profil * |
#4 · Zasláno: 26. 11. 2011, 13:06:25
Děkuji, ale větvení umím, omlouvám se za špatný popis. Mě spíše zajímalo, jak najdu nejvhodnější výsledek pokud aplikace bude obsahovat například 40 otázek, takže v databázi nebudu mít nic co by úplně odpovídalo na 100%, takže bych chtěl zobrazit podle nejvyšší procentuální shody.
|
||
wiz Profil * |
#5 · Zasláno: 26. 11. 2011, 13:27:07
[#3] Tori Měl jsem na mysli něco takového: http://www.zegeniestudios.net/ldc/index.php?lang=cz
|
||
WMPopi Profil |
#6 · Zasláno: 26. 11. 2011, 13:58:53
wiz:
Asi bych to řešil tabulkou se seznamem barev, ve sloupcích bych měl jednotlivé podmínky (teplá, světlá,..) a do těch bych vyplňoval na kolik procent tomu ta daná barva odpovídá. barva, světlá, tmavá, teplá, studená --- červená, 30, 70, 100, 0 Z toho pak jednoduše vytáhneš podle relevance. Pokud by bylo podmínek víc nebo by se měly přidávat, rěšil bych to tabulkou s barvama a tabulkou s pravidly. |
||
wiz Profil * |
#7 · Zasláno: 26. 11. 2011, 22:13:24
Děkuji za odpovědi, ale není to přesně to co hledám. Problém je v tom, že když jsem pokládal otázku, neměl jsem jí pořádně promyšlenou, takže otázka by měla znít nějak takto.
Mám tabulku, ve která jsou uložené informace co která věc umí: --------------------------------------------------------------- | id | nazev | volat | kalendar | video | audio | 3G | |-------------------------------------------------------------| | 1 | Tel 1 | 1 | 1 | 1 | 0 | 0 | | 2 | Tel 2 | 1 | 1 | 0 | 0 | 0 | | 3 | Tel 3 | 1 | 0 | 0 | 0 | 0 | -------------------------------------------------------------- Pokud uživatel bude chtít najít telefon, který umí volat, kalendar, audio a video, systém vybere a setřídí podle procentuální shody. Výsledek by měl vypadat takto: 1, Tel 1 - 75% 2, Tel 2 - 50% 3, Tel 3 - 25% Chci, ale aby jsem do databáze mohl libovolně přidávat nový produkt a aplikace s ním počítala (aby aplikace byla dynamická). Děkuji všem za pomoc |
||
Tori Profil |
#8 · Zasláno: 26. 11. 2011, 23:11:28 · Upravil/a: Tori
wiz:
Šlo by to celkem dobře s datovým typem BIT. Přidáte si navíc do tabulky sloupeček, kde budou všechny schopnosti telefonu dohromady jako bitmask (Tel 1 = 11100, Tel 2 = 11000 atd.). Při vyhledávání si přeložíte výběr "volat=1, kalendář=1,audio=1,video=1,3G=0" jako 11110 a převedete na celé číslo (30). Pak můžete použít dotaz SELECT id, nazev, BIT_COUNT(bitmask & 30) AS 'shoda' FROM tabulka ORDER BY shoda DESC, nazev |
||
wiz Profil * |
#9 · Zasláno: 26. 11. 2011, 23:55:04
Moc Vám děkuji. Databáze by měla obsahovat okolo 200 řádků. Mimochodem, co znamená číslo 30 v MySQL dotazu? Zkusím to udělat Vašim způsobem, pokud ale někoho napadlo ještě nějaké řešení a napíše ho sem tak budu jedině rád.
|
||
Tori Profil |
#10 · Zasláno: 27. 11. 2011, 09:54:21 · Upravil/a: Tori
wiz:
„co znamená číslo 30 v MySQL dotazu“ Zvýraznila jsem. Zkusila jsem použít b'11110' |
||
wiz Profil * |
#11 · Zasláno: 27. 11. 2011, 13:38:07
Aha, takže teď už to opravdu celé chápu. Ještě jednou Vám děkuji.
|
||
Časová prodleva: 13 let
|
0