2012-01-25 4 views
3

誰でもこれを成功させましたか? http://www.walmart.com/cservice/ca_storefinder.gspDjango - 市、州、郵便番号を単一のフィールドに結合します

ユーザーは都市、州または郵便番号のいずれかを入力し、インテリジェント検索

を持つことができます

で発見されたものと同様の機能を複製しようとすると

私は正規表現のビットを使用しての試みを開始しましたそして、分解体私はすぐに、これは、エンドユーザーのためのインテリジェント

みなさ

アプローチを動作させるために思考の少しより多くを取る作業に気づいたものの

  • ライブAjaxのオートコンプリート通話
  • スフィンクス、フルテキスト検索
  • 正規表現検索DB側
  • 正規表現の検証のユーザー入力これまで

    import re 
    
    from general.models import ZipCode 
    
    def findLocation(value): 
        match = re.search(r"\d{5}", value) 
        if match: 
         try: 
          return Zipcode.objects.get(zip=value) 
         except ZipCode.DoesNotExist: 
          return False 
        else: 
         kwargs = {} 
         vals = value.split(',') 
         if len(vals) > 1: 
          kwargs['city'] = value[:len(value)-len(vals[-1])-1] 
          state = vals[-1].strip() 
          if len(state) == 2: 
           kwargs['state'] = state 
           else: 
           kwargs['state_name'] = state 
         else: 
          kwargs['city'] = value 
         return ZipCode.objects.filter(**kwargs) 
    

    郵便番号で以下

スニペットこの例は、すべての米国の郵便番号/州/州の略語/都市を含むデータベースモデルです githubの上で利用できるコピーは高度な機能のこの種の

https://github.com/amites/django-general

答えて

1

であり、あなたはより良いthe Solr search engineのように、いくつかの専用ツールを使用すると思います。

これはわかりませんが、これはJavaベースのオープンソースで非常に強力な検索エンジンで、場所の検索機能を追加できます。検索アクションは、Webサービス(xml、jsonなど)を使用して実行されます。

手順は基本的に次のとおりです。サーバーにsolrをインストールし、スキーマ(データを格納およびインデックスする方法)を構成します。データベースからデータをインポートし、検索フォームをWebサービスにバインドします。

this article to have more informations about geolocation searches(少し古いかもしれませんが、チェックする必要があります)をお読みください。

+0

提案をありがとうございました - しかし、それを使って何を構築していない前に、私はSolrの間で来ている - これは – Alvin

+0

Googleのジオコーディングがへの道のように思えた社内ものを維持する必要がある人のための優秀なユースケースのように聞こえます非営利のために迅速な高価な取得事業免許なしで一日あたり2,500最大のクエリ - - 私は価格設定を見直しまで行くことはこの1つは非営利のためになり、後に – Alvin

2

私は最近、同様の問題に直面して、GoogleのGeocoding APIを使用してこれを行っています。良い点は、アドレス文字列をまったく解析する必要がないことです。あなたはgoogleに渡すだけで、それは解析を処理します。場所が見つかった場合は、住所を説明する構造化オブジェクトを返します。あなたはあなたが望むアドレスの任意の部分を抽出することができます。

もちろん、このソリューションはウェブサイトがあり、ジオロケーションAPIの使用がGoogle Maps TOSによって許可されている場合にのみ機能します。

+0

今とSOLRのための複数のフィールドになるだろうと思いますこれは最速の実装のように思える - TOSの更なる評価によって料金体系が法外な費用がかかりますけれども提案のためのおかげで – Alvin

+0

私は、前に様々なプロジェクトのためにGoogle MapsのAPIを使用しました。しかし小さなユースケースのための素晴らしいアイデア。 – Alvin

関連する問題