![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 1 Dołączył: 5.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chciałbym na swojej stronie zaimplementować skrypt wyszukujący miasta w podbliżu podanej miejscowości. 1. W jaki sposób działają takie skrypty, czy potrzebuje wykupić bazę danych miejscowości? 2. Czy znacie gotowe darmowe lub płatne rozwiązania/skrypty? |
|
|
![]() |
![]()
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 ![]() |
A nie pomyślałeś, że google używa geolokalizacji? Sprawdzi Twój IP i zapewne dobierze najbliższy Adamów do lokalizacji powiązanej z tym IP (IMG:style_emoticons/default/smile.gif) Inna sprawa, że zdaje się to psu na budę, bo od czego są proxy? Właśnie najlepszym rozwiązaniem jest zasugerowanie wyniku dając możliwe wyniki poprzez zawężenie. Najpierw do województw, a potem ewentualnie powiatów. Jeśli na jakimś etapie będziesz już miał jednoznaczność - odpuszczasz sobie. Ja ogólnie mam mechanizm ciutkę inny. Mam dwie formy odpytania o miejscowość:
1) przez id - tu brak problemu - zawsze albo jest jedno, albo nie ma wcale 2) przez nazwę - z użyciem LIKE '$nazwa%' - czemu tak? Nazwa jest indeksem i takie zdefiniowanie LIKE (z możliwą "rozszerzoną" nazwą za podaną) używa indeksu (jeśli na kolumnie name założyliśmy takowy), czyli jest szybsze. Sprawdź sobie explain gdy masz z i bez indeksu. Bez indeksu - filesort, temporary i where, a z indeksem tyl where. Dwa - po stronie skryptu wychwytuję nazwy będące idealnym trafieniem oraz podobne. Wydzielam je do dwóch osobnych tablic. Jeśli idealne trafienia mam to korzystam z nich i ewentualnie sugeruję userowi uściślenie. Zawsze jednak mogę odwołać sie do drugiej i zaproponować mechanizm "Może chodziło Ci o ..." i podaję inne nazwy, nie będące już dokładnie nią. Przykład? Wpiszę podany przez Ciebie "Adamów" i znajdzie mi takie (właściwie to nawet 4), ale zasugeruje dodatkowo: Adamów Drwalewski, Adamów Rososki, Adamów-Parcel, Adamów-Wieś, Adamówek, Adamówka. Teraz jeśli jest to wyszukiwarka serwisu, mogę te miejscowości ograniczyć do takich, które mają cokolwiek do zaoferowania, czyli są jakoś połaczone z aktywnymi produktami w ofercie serwisu. Co do powiatów, to ja tylko uzywam ich w przypadku niejednoznaczności i tak zaimplementowany routing, że niejednoznaczność sprowadzam do jednoznaczności. Jeśli ktoś podal tylko nazwę, podsuwam mu z jakiego województwa są wyniki i koniec. Jeśli trafi w pojedynczy, jego szczęście. Jeśli nadal będzie kilka to zasugeruję miejscowość ale oprócz nazwy dopisuje obok nazwę powiatu. Tak więc linki NIGDY nie rozwiną się do formy wojewodztwo_jakieś/powiat_jakiś/miasto_jakieś, ale powiat będzie olany, gdyz od razu rozwinie się do formy wojewodztwo_jakieś/miasto_jakieś,id_miasta_w_bazie i choćby ktoś cudował z parametrami w url, to nigdy nie zadziała ten parametr... Co zabawniejsze, to router mam tak napisany, że nawet uzycie fałszywych danych poprawia url, ponieważ znając id miasta, znam jego nazwę i województwo, a tym samym mogę cały url poprawić do w pełni poprawnej formy. Przykład z tego mojego routera... /kategoria/miasto_sdfbjfb,1/ przejdzie przez router i wykona 301 na /kategoria/miasto_lepice,1/wojewodztwo_mazowieckie,7 Pozbywasz się z google od razu double content, gdzie różne adresy prowadza do tej samej treści. Nawet jeśli htaccess mi zawali sprawę, to router go poprawi i przekieruje na jedyny poprawny. Już nawet nie mówię, że przy okazji router oprócz samego adresu generuje mi kanoniczne, które mogę wykorzystać w sekcji head. Jest masę zabawy z tym, ale dużo używam cache i całość powinna być dość wydajna. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 03:45 |