Qual é a melhor abordagem para a interpretação de uma entrada de texto para fins de geocodificação?

votos
3

Considere o seguinte site:

http://maps.google.com

Ele tem uma entrada de texto principal, onde o usuário pode digitar negócios, regiões, províncias, cidades, endereços e códigos postais. Gostaria de saber qual é a melhor maneira de implementar uma pesquisa como esta. Sei que, provavelmente, o Google Maps usa uma pesquisa de texto completo com todos os tipos de dados na mesma tabela, e tem a chance de ter um analisador que classifica a entrada (ou seja, entre numérico, como códigos postais e coordenadas, e textuais, como negócio e endereços).

Com a disseminação de dados em muitas mesas e sistemas, um analisador é essencial. O analisador pode ser construído a partir de expressões regulares, ou poderia ser construído com ferramentas de IA como Redes Neurais Artificiais e Algoritmos Genéticos.

Que abordagem você recomendaria?

Publicado 19/05/2009 em 21:00
fonte usuário
Em outras línguas...                            


3 respostas

votos
3

Poderia ser melhor para agregar os dados de todas as tabelas em um índice de pesquisa. Lucene é um motor de busca livre, semelhante à forma como motor de busca do Google funciona (índice invertido), e deve permitir que você procure por qualquer um desses valores ou qualquer combinação deles com relativa facilidade.

http://lucene.apache.org/java/docs/

Lucene vem com sua própria linguagem de consulta (mais uma vez, muito semelhante ao Google ou qualquer outra busca na Internet sintaxe locais). A única desvantagem de usar algo como Lucene é que você precisa para construir seu índice. Você não estaria consultando o banco de dados diretamente (que pode ficar muito complicado ... índice invertido são praticamente projetado para que a sua tentativa de fazer), então você precisa para reunir periodicamente novas informações do seu banco de dados e adicioná-lo ao seu índice . Também pode ser necessário reconstruir o seu índice para remover dados desnecessários.

Com Lucene, você tem uma sintaxe de consulta bastante flexível que a maioria das pessoas está familiarizada com (porque quase todo mundo procura na internet), ele executa muito bem, e não é muito complicado. Ao usar Lucene, você evita o hit do uso de expressões regulares (que não são o mecanismo de texto busca mais perfeita), e você não tem que escrever seu próprio analisador. Deve ser um ganha-ganha, além de um pouco de curva de aprendizagem para construir um gerador de índice Lucene e descobrir como consultar esse índice.

Respondeu 24/05/2009 em 00:09
fonte usuário

votos
1

Eu teria os dados em um banco de dados. Se os dados tem que grande ou eu sabia que ia ser enorme, eu atribuir um id para cada empresa, endereço etc, então tem outras tabelas que fazem referência a esses dados.

Expressões Regulares só seria necessária se o usuário poderia definir o que deseja procurar:

negócio: Argos

Mas então o que acontece se eles querem um Argos em Manchester (Desculpe, eu sou Inglês), talvez em seguida, obter a localização do usuário com base no seu IP , mas o que acontece se eles dizem:

negócio: Argos Scotland

Agora você não sabe se a empresa tem duas palavras, ou se houver um local próximo a ele. Tudo isso tem que ser levado em consideração.

Ps Desculpe se isso não fazia sentido.

Respondeu 20/05/2009 em 13:56
fonte usuário

votos
0

Você vai precisar de pré processar a consulta antes de fazer uma pesquisa de texto completo sobre ele. Se você estiver usando um banco de dados GIS, então você já terá colunas como cidade, areacode, país etc. Converta sua consulta em tokens separados no espaço ou vírgulas, ou ambos. Em seguida, bateu colunas individuais a um jogo. Desta forma, você vai saber o que parte da consulta é a cidade, o areacode etc.

Você também pode tentar algumas abordagens de aproximação ingênuos, exemplo - 6 números consecutivos será, provavelmente, um código de área. Procurar palavras comuns como "estrada", "restaurant", "rua", etc, que será parte de muitas consultas e, em seguida, usar alguma aproximação para descobrir o que eles estão procurando. Espero que isto ajude.

Respondeu 25/05/2009 em 14:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more