사용자가 주소 양식을 작성하는 데 소요되는 시간을 줄이려고합니다. 이 양식에는 주소, 우편 번호, 도시, 지구 및 준 지구가 필요합니다. 이렇게하려면문자열에서 비 주소 정보를 필터링하는 방법
그래서 지금처럼 열기 거리지도의 Nominatim API를 쿼리 : 다음 반환 된 몸에서 우편 번호 같은 것들을 분석
var
request = require('request'),
address = 'Grand Parkview Asoke, Unit 255/109 15th Flr., Sukhumvit 21 Road',
baseUri = 'http://nominatim.openstreetmap.org/search?format=json&addressdetails=1',
query = '&accept-language=en&q=' + encodeURIComponent(address);
request(baseUri + query, function(err, res, body) {
console.log(JSON.parse(body));
});
.
문제는이 문제가 바닥 수와 관련이없는 "정상적인 주소"에만 적용됩니다.
var address = 'Sukhumvit 21 Road';
을하지만이 작동하지 않습니다 : 즉,이 작동 이제
var address = 'Grand Parkview Asoke, Unit 255/109 15th Flr., Sukhumvit 21 Road';
내가 지금처럼 가능한 시험의 매우 원유 세트와 API 여러 번 쿼리 오전 :
Grand Parkview Asoke, Unit 255/109 15th Flr., Sukhumvit 21 Road
Parkview Asoke, Unit 255/109 15th Flr., Sukhumvit 21 Road
Asoke, Unit 255/109 15th Flr., Sukhumvit 21 Road
Unit 255/109 15th Flr., Sukhumvit 21 Road
255/109 15th Flr., Sukhumvit 21 Road
15th Flr., Sukhumvit 21 Road
Flr., Sukhumvit 21 Road
Sukhumvit 21 Road ==> it works!
0,123,516 : 그것은이 모든 문자열을 시도한다는 것을 의미
//create trials
var
trials = [],
addressParts = address.split(' ');
for (var i = 0, il = addressParts.length; i < il; i++) {
if (il - i >= 2) trials.push(addressParts.slice(i, il).join(' '));
}
많은 요청이 필요하므로 매우 느립니다.
"주소가 아닌"정보를 걸러내는 더 효과적인 방법이 있습니까? 태국어와 같은 비 서구어에서이 작업을 수행 할 방법을 찾고 있습니다.
미국 주소 인 경우 SmartyStreets에는 [주소 추출 API] (http://smartystreets.com/products/liveaddress-api/extract)가 있는데 ... 태국인에게 도움이 될 수 있습니다 ... – Matt
@ 매트 내 진짜 질문은 알고리즘이 작동하는 방법이라고 생각합니다. ;) – Tom
글쎄, 그건 복잡해. 적어도 ... 내가 여기서 널 도울 수 있으면 좋겠다. – Matt