2009-07-01 14 views
5

Sto cercando consigli sull'input di input da un utente in più combinazioni di Città/Stato/Codice di avviamento postale/Paese.Analisi input utente - città/stato/codice postale/paese

Un esempio comune sarebbe ciò che fa Google maps.

Alcuni esempi di input sarebbe:

  • "Città, Stato, Nazione"
  • "Città, Paese"
  • "Città, CAP, paese"
  • "Città, Stato , CAP"
  • 'CAP'

Quale sarebbe un modo efficace e corretto di pa rsi questo input da un utente?

Se siete a conoscenza di alcun esempio implementazioni si prega di condividere :)

risposta

0

Io stesso sono molto affascinato da come Google gestisce questo. Non ricordo di aver visto nulla di simile da nessun'altra parte.

Credo, si tenta di separare una stringa di input in parole cercando vari delimitatori - spazio, virgola, punto e virgola ecc. Quindi si hanno diverse combinazioni. Per ogni combinazione, prendi ciascuna parola e la confronta con il paese, la città, la città, il database dei codici postali. Quindi definisci alcune metriche su come valutare il risultato della corrispondenza di gruppo per ciascuna combinazione. Qui dovrebbero anche esserci regole incrociate, come se il codice postale non combaci bene, ma paese, città, città corrispondono bene e in combinazione si riferiscono ad un indirizzo valido, quindi la metrica produce un punteggio alto.

È sicuramente difficile e non un esercizio di codice serale. Richiede anche forti risorse computazionali: un hosting condiviso probabilmente creerebbe solo 10 richieste, ma un data center potrebbe funzionare bene.

Non sicuro se c'è un'implementazione di esempio. Molti servizi geografici sono offerti su base retribuita. Qualcosa che sofisticato come GoogleMaps sarebbe probabilmente costato una fortuna.

Correggimi se sbaglio.

1

Il primo passo sarebbe quello di spezzare il testo in singoli token utilizzando spazi o virgole come i caratteri di delimitazione.Per la scalabilità, è possibile quindi consegnare ciascun token a un thread o server (se si utilizza un'architettura di ridimensionamento della mappa come ad esempio) per capire quale sia ciascun token. Ad esempio,

  • Se nel modello sono presenti numeri, probabilmente è un codice postale.
  • L'elemento nell'elenco degli stati noti?
  • Anche i paesi sono abbastanza facili da gestire come gli stati, c'è un numero limitato.
  • Quale ordine sono i token rispetto ai modi comuni di scrivere un indirizzo? La maggior parte degli input seguirà probabilmente l'abitudine dell'ufficio postale locale per i formati degli indirizzi.

Una volta ottenuti i singoli token, è possibile incollare nuovamente le parti per ottenere un indirizzo completo. Nei casi in cui ci sono domande, è possibile chiedere all'utente cosa intendessero realmente (come le mappe di Google) e aggiungere tali informazioni a un elenco appreso.

Il metodo più semplice per aggiungere il supporto a un'applicazione, supponendo che non si stia tentando di creare un sistema di mappe, è di interrogare Google o Yahoo e chiedere loro di analizzare la data.

0

Supponendo che tu abbia a che fare solo con questi quattro campi (Città Zip State Country), ci sono valori finiti per tutti i campi ad eccezione di Città, e anche quello immagino che se hai una grande lista di città sia anche finito. Quindi dividi ogni campo con una virgola, quindi controlla ogni elenco di campi.

Supponendo che stiamo parlando degli Stati Uniti indirizzi-

  • Zip è più evidente, in modo da controllare per quella prima.
  • Stato ha opzioni 50x2 (California o CA), controllare che la prossima
  • Paese ha ~ 190x2 opzioni, a seconda su come comprende che si desidera essere (Stati Uniti, Stati Uniti, Stati Uniti d'America).
  • Qualunque cosa rimane è probabilmente la tua città.

Per quanto riguarda l'efficienza, potrebbe essere opportuno verificare prima una serie di formati "standard", come suggerisce Dan.

Problemi correlati