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



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人のスペシャリストに関するジャビスタを探しています。

Source: https://habr.com/ru/post/J349872/


All Articles