Autor | Zpráva | ||
---|---|---|---|
meca Profil |
#1 · Zasláno: 20. 1. 2007, 13:25:19 · Upravil/a: meca
Zdravim,
již to tu jednou bylo. Tenkrát jsem to nějak vyřešil; tak provizorně, že mě to již nestačí. Trochu se změnily podmínky, tudíž to zkusím ještě jednou: Potřebuji fci, která mi řekne, zda jeden z 2 000 záznamů v databázi se "hodí" k jednomu z 10 000 záznamů v XML souboru. Všechno je tak nějak vyřešeno - stačí mi tedy pouze princim, jak mohu porovnat delší řetězec plný balastu s dvou nebo tří slovním řetězcem v databázi. Nejlepší by as bylo porovnávat ten kratší řetězec z databáze s tím delším z XML souboru.. Jenže: (10 000 záznamů v XML * 2 000 v databázi) * min. 15 XML souborů = 300 000 000 dotazů - to je asi moc, co :-/ No, prostě jsem marný. Nemáte někdo nějakou ideu? Děkuji mockrát. |
||
Pavel Strejček Profil |
#2 · Zasláno: 20. 1. 2007, 13:47:59
Co ten XML naklopit už bez balastu vždy do databáze. Porovnání v DB by neměl být takový problém (JOIN a spol.).
|
||
meca Profil |
#3 · Zasláno: 20. 1. 2007, 13:54:42
Pavel Strejček
Jastný, jenže jak se toho balastu zbavit? Člověk, který nikdy neviděl XML výstup na zboží od e-shopů nemůže ani tušit, o čem mluvím - neuvěřitelné, co oni všechno dokáží považovat za "oficiální název produktu"... :-( Těch slov, který bych musel filtrovat je strašně moc. Teď jich mam skorem 100 a zdaleko to nestačí. |
||
Pavel Strejček Profil |
#4 · Zasláno: 20. 1. 2007, 14:05:10 · Upravil/a: Pavel Strejček
No, nějakou představu o těch e-shopech a jejich XML mám. ;-)
Tady záleží taky na tom jak často se to má dělat. Předpokládám, že buď CRONem, nebo nějak v adminu při importu zboží? Napiš víc podrobností. |
||
Pavel Strejček Profil |
#5 · Zasláno: 20. 1. 2007, 14:13:30 · Upravil/a: Pavel Strejček
Jinak porovnat 100 slov je sranda, když se to nebude dělat při každém zobrazení stránky návštevníkem. A to doufám, že né. :-)
|
||
Pavel Strejček Profil |
#6 · Zasláno: 20. 1. 2007, 14:26:16
meca
Jenže jak se toho balastu zbavit? Tím balastem jsem já myslel věci, které nejou zapotřebí k porovnání - XML značky a různá omáčka. Toho se zbavíš jednoduše. |
||
meca Profil |
#7 · Zasláno: 20. 1. 2007, 15:43:44
Pavel Strejček
Jastný, jastný; to mě nenapadlo. Jenže IMHO když naházím všechno do DB, tak se mi nic neulehčí, ne? Pač prostě beztak to budu muset nějak porovnávat a absolutně netušim, jak to to myslíš s tím JOIN a spol... :-/ No jinak - je to vskutku pomocí CRONu jednou denně. A... nic užitečnýho navíc mě teď bohužel nenapadá. ;( |
||
llook Profil |
#8 · Zasláno: 20. 1. 2007, 15:59:21
Určitě první věcí bude data z těch XML souborů nacpat do databáze, jak píše Pavel Strejček, protože pak se s tím lépe pracuje.
Další věcí bude vyvinout způsob, jak záznamy z tabulky "zboží v obchodech" přiřadit k záznamům v tabulce "moje databáze zboží". Něco mě napadlo. Zjednoduším to tak, že od každého zboží známe pouze ID a titulek, nic víc. Pak by se dala udělat taková prasárna, která by ale mohla fungovat: CREATE TABLE zbozi_v_obchodech ( id INT PRIMARY KEY auto_increment, title VARCHAR(255) ); CREATE TABLE moje_databaze_zbozi ( id INT PRIMARY KEY auto_increment, title VARCHAR(255), word1 VARCHAR(255), word2 VARCHAR(255), word3 VARCHAR(255), a tak dále (řekněme třeba 20 sloupců) ); S tím, že ke každému názvu v moje_databaze_zbozi by se uložilo ještě každé slovo z názvu zvlášť (například INSERT INTO moje_databaze_zbozi (title, word1, word2) VALUES ('Alfons Moucha', 'Alfons', 'Moucha');). A přiřazení by bylo: SELECT ... FROM zbozi_v_obchodech AS zo JOIN moje_databaze_zbozi AS mdz ON zo.title LIKE mdz.word1 AND zo.title LIKE mdz.word2 AND zo.title LIKE mdz.word3 a tak dál. Je to jenom takový nápad, třeba to někoho postrčí k lepšímu nápadu. |
||
meca Profil |
#9 · Zasláno: 20. 1. 2007, 17:24:44
llook
Ty vogo. Zní to naprosto šíleně - zkusim to -;) Dik... Btw, existuje nějaké DISLIKE ve SQL? Abych naopak mohl nějaké slova vyřadit? |
||
nightfish Profil |
#10 · Zasláno: 20. 1. 2007, 17:34:13
meca
not like '%neco%' and not like '%necojineho%' ... |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0