Witam.
Chciałbym zrobić w serwisie wyszukiwanie lokalizacji na wzór takich stron jak http://otodom.pl/ czy http://dom.gratka.pl/.
Chodzi o to, że mają tam jedno wspólne pole do wpisania lokalizacji, można wpisać naraz miasto, dzielnicę, ulicę i zwróci prawidłowe wyniki.
Nie chodzi mi o jakiś kod czy algorytm, a bardziej samą ideę jak takie coś ugryźć.
Nie chodzi mi też o samo wyszukiwanie przez php czy w mysql, a zasadniczo pomysł jak oni rozpoznają co jest co, bo zdaje się, aby wyniki były w miarę dobre, trzeba
rozpoznać co jest miastem, dzielnicą, a co ulicą, a może rozpoznają to tylko połowicznie, ogólnie szukam dobrego patentu.
Zakładam, że w bazie mają osobne kolumny na miasto, ulicę itp., sam tak robię w obecnym serwisie, importy xml też te dane mają osobno, więc tak jest naturalnie.
Zasadniczo nie ma problemu, aby zrobić osobne pola do wpisywania tych wartości, tak mam obecnie i potem jest odpowiednie zapytanie, ale wiem co jest co, jak ktoś się pomyli to jego wina, a chciałbym tak jak oni, tylko właśnie tu trza rozpoznać co jest co samemu, jak się system pomyli to już będzie wtedy moja wina, więc musi to być przemyślane.
Teoretycznie dzielę lokalizację na pojedyncze słówka, potem jakoś rozpoznaję co jest co, a dalej mając już odpowiednie przyporządkowanie, robię standardowe zapytanie na odpowiednie kolumny.
Tylko właśnie, jak rozpoznać co jest co, w miarę prosto i bezproblemowo, sprawdzać po prostu każde słówko względem odpowiedniej tabeli z miastami, dzielnicami, ulicami i zaprzestać jak będzie pierwsze trafienie czy może jakaś inna taktyka?
Jest jeszcze sprawa odporności na dziwne wpisy np. ktoś wpisze ulicę z przedrostkiem "ul" albo nazwę dwuczłonową dzielnicy, ulicy.
Zauważyłem, że u nich można skorzystać z wyboru autosugestii lub wpisać z palca, wiadomo jak ktoś wybierze autosugestię to są uzupełniane odpowiednie ID i przekazywane do wyszukiwania więc tu nie ma problemu, a co jak z palca ktoś wpisze?
Teoretycznie autosugestie nieco podpowiadają jak oni to robią, wpisując różne dane można zobaczyć co ma priorytet.
Co o tym sądzicie?
Nikt nie podzieli się sugestiami?