アドレスは「ダダティ」をどのように促しますか





2014年以来、DadataはTipsを見てきました。 連絡先の詳細(住所、銀行と会社の詳細、メールなど)をすばやく簡単に入力できます。







事は複雑に整理され、それについて話すことにしました。 住所のヒントは最も複雑であるため、取り上げます。







ディレクトリとインデックス作成



「ヒント」は何を促すべきかを知っています。なぜなら、彼らには巨大なガイドがあるからです。 この記事は住所のヒントに関するものですが、このケースのために他のDadatiリファレンスブックをリストします。







のヒントは何ですか 参考図書 ディレクトリを取得する場所
住所 FIAS 公式サイトからダウンロード
法人 法的実体とEGRIPの統一国家登録簿 連邦税務局の年間アクセスから購入 -ディレクトリごとに150 000₽
銀行 ロシア連邦中央銀行の信用機関のハンドブック 公式サイトからダウンロード
氏名 姓、名 自分を集めるか、準備完了を検索する
メール
  • 第1レベルドメイン。
  • Runetの上位40,000の第2レベルドメイン。
  • 無料プロバイダー(yandex.ru、mail.ru);
  • 人気のボックス名




準備されていない参考書で何かを検索することは、長くて感謝のない仕事です。 したがって、素晴らしいLuceneライブラリを使用して、ソースデータを検索インデックスに変換します。







検索インデックスは、情報をすばやく見つけることができる形式です。







物理的には、インデックスは2種類のファイルのコレクションです。









インデックスとアドレスのデータは合計で20ギガバイトを占有します。 企業にとっては、ほぼ同じで、残りの重量は軽くなります。







公式のディレクトリからデータを削除して、探していないものと返品しないものを節約します。 また、重複や明らかなエラーも削除します。 たとえば、アドレスによるインデックスには次のものはありません。









適切な手がかりを見つける



「ヒント」はかなり注意が必要です。 簡単にするために、プロセスを段階に分けて、それぞれについて詳しく説明します。 質問がある場合は、コメントで質問してください。







1.始めましょう:人が「ヒント」フィールドに文字を入力します。











新しいキャラクターはそれぞれ、新しいパラメーターでサーバーリクエストを起動します。 リクエストの頻度を厳しくすることができます。詳細は後で説明します



2.「ヒント」プラグインがリクエストを収集します。 ディスパッチャーは、人とサーバー間で動作しています-jQueryプラグイン「ヒント」( GitHubのソースコード )。







プラグインは検索用のデータを受信し、それをリクエストにパックしてサーバーに送信します。







プラグインはそれ自体から、返すアドレスの数を追加します。 この番号は、「ヒント」の統合のパラメーターとして設定されます。 数量が示されていない場合、「ヒント」は10個の結果を返します。 20以上を要求するのは無意味です-20のオプションのみが返されます。







プラグインはフィルタリングパラメータも渡します。これらは「ヒント」の統合中にも設定されます。 存在するフィルターは次のとおりです。









そして、ジオブーストのようなものがあります。 親の制限のように見えますが、アドレスのランキングにのみ影響します。 オムスク通りをモスクワよりも高くしたい場合は、お願いします。











Yandex.Moneyのデフォルトはモスクワの通りです。 都市の制限は、フィルタリングオプション「ヒント」で構成されます



デフォルトでは、プラグインで位置情報が有効になっています。ユーザーの位置をサーバーに転送します。 これも検索パラメーターです。







統合中に、サーバー要求の遅延を調整できます。 たとえば、100ミリ秒の遅延を設定します。 名人が100ミリ秒で4文字を駆動する場合、4文字の新しい文字を含む1つの要求がサーバーに送信されます。 一度に4つのリクエストはありません。







プラグインは、バージョン10以降のIEおよびすべての通常のブラウザーで動作します。 また、jQuery 1.10以降も必要です。







3.キャッシュを確認します。 要求がサーバーに到着すると、「ヒント」は最初にキャッシュを調べます。 彼らは、リクエストのすべてのパラメータで単一のものと一致するものを探しています。







キャッシングは、「M」、「Mo」、「C」などの短いクエリから節約します。 このような類似の組み合わせは膨大な量です。 各文字は個別の要求であるため、キャッシュは検索インデックスへの数百万件のヒットからサーバーを保護します。







キャッシュはすべてRAMにあり、100,000件の結果が含まれています。







4.インデックスで適切なヒントを探しています。 キャッシュに適切なものがない場合、「ヒント」が検索インデックスに送信されます。







ヒントは次の方法でアドレスを検索します。









このアルゴリズムは、リクエストの最後の単語のみが不完全またはエラーであることを意味します。 人が「モスクワターチ」と書いた場合、「ヒント」は「モスクワターチ*」を探します。











モスクワターチのようなリクエストは失敗します。 人々はアドレスを順番に入力し、「ヒント」はアドレスの各部分の正しいスペルを一貫して提案するため、これは問題を引き起こしません。



プラグインでジオロケーションがオフになっている場合、1〜2文字のリクエストで、「ヒント」は地域、市区町村、都市のみで検索されます。 自宅では、サービスはリクエストの2番目の単語から検索します。







各ヒントの結果には重みが割り当てられます。 特に短いクエリの場合、アルゴリズムは何千ものオプションを見つけることがあるため、重みが必要です。 また、最大20個を返すことができます。 したがって、「ヒント」は結果を重みでソートし、上位のものを返します。







結果をランク付けするアルゴリズムは、Dadatのノウハウです。 これは非常に深刻なことなので、詳細に説明することはできません。







5.結果を並べ替えます。 検索結果の重みが同じ場合、ヒントはそれらをソートします。 ソートアルゴリズムも自己記述型なので、やはり不思議なままです。







6.答えを準備します。 「ヒント」を返すアドレスの形式は、FIASとわずかに異なります。









7.キャッシュします。 結果を返す前に、「ヒント」はすべてのパラメーターと応答でリクエストをキャッシュします。







キャッシュはLRUアルゴリズムを使用して100,000エントリに制限されているため、サービスはそこからまれな要求をスローします。 「Mo」のような人気のあるものは、キャッシュに永久にハングアップします。







8.プラグインはヒントを描画します。 サーバーから応答を受信し、画面にアドレスを表示し、一致するものを強調表示します。 入力中にEnterを押すと、プラグインはテキストを検出されたプロンプトと比較し、フィールド内の最適なプロンプトに置き換えます。







それが動作する方法です。 ヒントを取り上げると、この記事は少なくとも少し役立ちます。 そして、私たちに働きに来て、一緒にクールなものを考え出してください。 現在、「ヒント」と7人のスペシャリストに関するジャビスタを探しています。








All Articles