![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 6.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Pisze stronę i jest mi potrzeby podział polski na województwa, powiaty, gminy , miejscowości i dzielnice. Znalazłem w necie takie coś, ale brakuje tam podziału na dzielnice. Na php się znam tak sobie, ale nie na js i dla tego mam do was prośbę. Umiał by mi ktoś wytłumaczyć jak to zrobić, albo pokazać na przykładzie? Gotowiec znajduje się pod linkiem: http://www.polip.com/download/wiocha.tgz Z góry bardzo dziękuje za każdą pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
XPathy na dużych plikach XML do demonów szybkości nie należą. Zrobić w nich zaś sensowny odpowiednik full-text-searcha to już zupełnie zajedziesz maszynkę. Innymi słowy - niby można - tylko czy jest to dobre i sensowne podejście?
Iść zawsze można, nikt nikomu nie broni. Problemem jest jednak faktyczna wydajność w ujęciu ogólnym. Wyszukiwanie adresu jest bowiem tylko częścią zazwyczaj szerszego zapytania. W takim wypadku zaczynają się kombinacje z optymalizacjami już, bo inaczej się po prostu nie da tego w rozsądny (o możliwie niskim czasie przeszukiwania) sposób zrobić. A zwróciłeś uwagę, że najczęściej ulica to tylko jedna składowa zapytania? Szukasz po prostu "Kwiatowa 10" czy "Pcim Dolny, Kwiatowa 10"? Jak z tego złapiesz wzorzec dla LIKE? A może złapiemy regexp w bazie? W tym momencie szlag trafia cudowne indeksy. Regexp i Like wszak z indeksu korzystają tylko gdy mają wspomniane przez Ciebie zakotwiczenie z lewej. Innymi słowy: LIKE 'państwo/%' indeks chwyci, ale już LIKE '%słowo%' niestety z indeksu nie korzysta. A przecież trzeba doprowadzić do formy, gdzie mamy wyszukiwane pathy nie z jednym, ale dwoma lub więcej miejscami podanymi jako parametry wyszukiwania. Tu i tak jest w miarę jeszcze statycznie, bo adresy wszak aż tak często się nie zmieniają, a i rozrost miejscowości aż taki szybki nie jest. Co zaś do "trzaskania appek", to akurat w pracy mam moment, gdy siedzimy z zespołem nad wersją 1.0 aplikacji obecnie tworzonej (nazwijmy ją 2.0) No i mamy na tapecie integrację "wsobną", czyli wchłonięcie części funkcjonalności 1.0 do obecnie rozwijanej, przy jednoczesnym nie tykaniu wersji 1.0, bo leży na produkcji (IMG:style_emoticons/default/smile.gif) Migracja pełną gębą za jakiś czas, a już teraz przemapowywanie modeli, encji i relacji oraz co z tym związane, przemyślenie transformatorów danych pomiędzy biema wersjami oraz przerobienie kodu tak, by jakiś czas działały na produkcji oba i nie kolidowały ze sobą, bo będą wszak na tych samych danych równolegle pracowały. Mimo tego że bazowano na encjach z 1.0, to projekt nieco odpłynął od pierwotnej koncepcji. Było wtedy trochę błędów popełnionych. Samo wydzielenie i "optymalizacja" staroci po jakoś pół roku to już tragedia. Po 2 latach to już by była masakra, która wiązała by się pewnie z zaoraniem kodu i pisaniem od zera - szybciej by to pewnie wyszło. Dlatego też IMHO czasem warto poświęcić chwilkę i od początku zaprojektować coś z głową, niż po miesiącu czy dwóch przeklinać nietypową implementację, nie zawsze do końca przemyślanego podejścia. Ilość wulgaryzmów wyrażanych wszem i wobec na pewno będzie mniejsza (IMG:style_emoticons/default/wink.gif) Tutaj problem na jaki napotkał autor nie jest duży. Prawda jest taka, że podany przykład nie jest problemem tak naprawdę. Nie jest bowiem konieczne wrzucanie całego Terytu (IMG:style_emoticons/default/smile.gif) Sam gdy z nim pracowałem olałem znaczną część danych. Do jednoznacznego określenia jest tak naprawdę wystarczające mieć: wojewodztwo - powiat - miejscowosc i ewentualnie ulica czy dzielnica. Zależy czy te ostatnie konieczne i używane. Każdy inny rekord można śmiało odrzucić. Tu właśnie zahaczamy o najważniejsze - przemyślenie aplikacji, jej funkcjonalności i działania. I właśnie to powinien autor tematu przemyśleć zanim zacznie pisać skrypty importujące dane z xml. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 22:43 |