自動補完と検索APIの提案


オートコンプリートとの提案



私たちは以前、以前の記事でTomtom検索APIを議論しました.Understanding Fuzzy Search .
今日は少し深く潜り、話し合いますSearch Autocomplete API , あなたがそれらを追跡する必要がなく、ユーザーにより有意義な結果を提供できる機能
Autocompleteエンドポイントは、ユーザーが探しているかもしれない関連カテゴリーを提供することによって、あいまいな検索の「型先」パラメタを補います.このパラメータの説明をドキュメントから確認しましょう.

そして、検索が予測モードに入るとき、それはより多くのマッチング結果を提供します.

まず、APIの技術的側面


このエンドポイントのドキュメントは、開発者ポータルで見つかります.https://developer.tomtom.com/search-api/search-api-documentation/autocomplete
このREST APIコールはhttps - getを使用し、最小パラメータを持ちます.

ワイン店を探し始めましょう.それで、私は「ワイン」をタイプし始めます、そして、第4の性格で、我々は若干の提案を提供すると決めます.マドリードにいるので、サンプルコールは次のようになります.
https://api.tomtom.com/search/2/autocomplete/wine.json?key=<Your_API_Key>&language=en-GB&lat=40.41687&lon=3.70356 
プライベートAPIキーを呼び出しで追加します.
{
  "context": {
    "inputQuery": "wine",
    "geoBias": {
      "position": {
        "lat": 40.41687,
        "lon": 3.70356
      }
    }
  },
  "results": [
    {
      "segments": [
        {
          "type": "category",
          "value": "Wine & Spirits",
          "matches": {
            "inputQuery": [
              {
                "offset": 0,
                "length": 4
              }
            ]
          },
          "id": "9361025",
          "matchedAlternativeName": "Wine"
        }
      ]
    },
{
      "segments": [
        {
          "type": "category",
          "value": "Wine Bar",
          "matches": {
            "inputQuery": [
              {
                "offset": 0,
                "length": 4
              }
            ]
          },
          "id": "9379007",
          "matchedAlternativeName": "Wine"
        }
      ]
    },
    {
      "segments": [
        {
          "type": "category",
          "value": "Winery",
          "matches": {
            "inputQuery": [
              {
                "offset": 0,
                "length": 4
              }
            ]
          },
          "id": "7349",
          "matchedAlternativeName": "Wine"
        }
      ]
    }
  ]
}
結果を調べましょう.
  • 私は3つのセクションを参照してください.
  • それらのすべてはタイプ「カテゴリー」です.
  • ドキュメントによると、我々は結果の3種類を得ることができます:ブランド、カテゴリ、平文.
    例えば、「ジム」という用語を探すなら、いくつかのブランドを参照すると仮定すると、以下のようになります.
    https://api.tomtom.com/search/2/autocomplete/jim.json?key=<API KEY>&language=en-GB&limit=10 
    
    {
      "context": {
        "inputQuery": "jim"
      },
      "results": [
        {
          "segments": [
            {
              "type": "brand",
              "value": "Jim Thompson",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 3
                  }
                ]
              }
            }
          ]
        },
        {
          "segments": [
            {
              "type": "brand",
              "value": "Jimmy's Pizza",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 3
                  }
                ]
              }
            }
          ]
        },
        {
          "segments": [
            {
              "type": "brand",
              "value": "Jimmy John's",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 3
                  }
                ]
              }
            }
          ]
        },
    {
          "segments": [
            {
              "type": "brand",
              "value": "Jimmy Chung's",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 3
                  }
                ]
              }
            }
          ]
        },
        {
          "segments": [
            {
              "type": "brand",
              "value": "Jimmy Choo",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 3
                  }
                ]
              }
            }
          ]
        }
      ]
    }
    
    私たちの入力に基づいてここに示すいくつかのブランドがあります入力を続け、以下のような問い合わせを行います.
    {
      "context": {
        "inputQuery": "jimm"
      },
      "results": [
        {
          "segments": [
            {
              "type": "brand",
              "value": "Jimmy's Pizza",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 4
                  }
                ]
              }
            }
          ]
        },
        {
          "segments": [
            {
              "type": "brand",
              "value": "Jimmy John's",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 4
                  }
                ]
              }
            }
          ]
        },
        {
          "segments": [
            {
              "type": "brand",
              "value": "Jimmy Chung's",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 4
                  }
                ]
              }
            }
          ]
        },
    {
          "segments": [
            {
              "type": "brand",
              "value": "Jimmy Choo",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 4
                  }
                ]
              }
            }
          ]
        },
        {
          "segments": [
            {
              "type": "brand",
              "value": "Jimmy's Killer Prawns",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 4
                  }
                ]
              }
            }
          ]
        }
      ]
    }
    
    今ではブランド「ジムトンプソン」は「M」という手紙の上でタックした後にリストから消えてしまいました.そして、私たちには新しい「ジミーのエビ」ブランド名があります.
    私たちの元のクエリー(ワイン)に戻って、ドキュメントで指定されるように、私はデフォルトで5つの結果だけを得ます.私は、私が私のユーザーのためにそれより多くを必要とするつもりであると思います.
    私の最初の試みに戻って、私はすでにいくつかのオプションパラメータ(LATとマドリードで最も中心的な場所の長さ:La Puertaデルソル)を追加しました.次に、オプションのパラメータを使います.

    オプションパラメータ


    オプションのパラメータを見てみましょう.

    それで、我々が国(ES =スペイン)のために場所域を交換するならば、我々が何を得るかについて見ましょう.
    新しいURLは次のようになります.
    https://api.tomtom.com/search/2/autocomplete/wine.json?key=<API_KEY>&language=en-GB&countrySet=ES&limit=10
    
    そして今度は次のような結果を得ます.
    {
      "context": {
        "inputQuery": "wine"
      },
      "results": [
        {
          "segments": [
            {
              "type": "category",
              "value": "Wine Bar",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 4
                  }
                ]
              },
              "id": "9379007",
              "matchedAlternativeName": "Wine"
            }
          ]
        },
        {
          "segments": [
            {
              "type": "category",
              "value": "Wine & Spirits",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 4
                  }
                ]
              },
              "id": "9361025",
              "matchedAlternativeName": "Wine"
            }
          ]
        },
    {
          "segments": [
            {
              "type": "category",
              "value": "Winery",
              "matches": {
                "inputQuery": [
                  {
                    "offset": 0,
                    "length": 4
                  }
                ]
              },
              "id": "7349",
              "matchedAlternativeName": "Wine"
            }
          ]
        }
      ]
    }
    
    そして、それは全く前と同じです!少なくとも一貫性を見ます.(これらのカテゴリーはスペインのデータベースにある)これらの3つのカテゴリーで、私はユーザにそれらを提示することができます、そして、それらのどれかが選ばれるならば、我々はセグメントで提供される「ID」をとって、通常のPOIカテゴリー検索を実行することができます.この場合、私はカテゴリWine & Spirits 「私が欲しいものに最も近いのです.
    私は、クイックカテゴリー検索をして、私が何を得るかについて見ます.
    ここでPOI検索ドキュメントを使用します.https://developer.tomtom.com/search-api/search-api-documentation-search/category-search
    今回は「プエルタ・デル・ソル」のための「LAT,LON」をバイアスガイドラインとして使用します.
    https:// https://api.tomtom.com/search/2/categorySearch/.json?key=<API_KEY>&lat=40.41687&lon=-3.70356&categorySet=9361025 
    
    結果をチェックする前に、このURLを詳しく調べましょう.
  • 私はクエリ内の任意のテキストを渡しませんでした:私はこのカテゴリのすべての可能なPOISをし、この場所に近い.
  • カテゴリはオプションのパラメータ
  • 今このREST APIの呼び出しはいくつかの興味深い結果を与え、最小10を返すので、ユーザに提示するのに十分です.
    結果の最初の項目を見ましょう.
    {
      "type": "POI",
      "id": "ES/POI/p0/1486801",
      "score": 1.21439,
      "dist": 295.90900560698543,
      "info": "search:ta:724009006287107-ES",
      "poi": {
        "name": "David Borda Juan Oscar",
        "categorySet": [
          {
            "id": 9361025
          }
        ],
        "categories": [
          "food drinks: wine spirits",
          "shop"
        ],
        "classifications": [
          {
            "code": "SHOP",
            "names": [
              {
                "nameLocale": "en-US",
                "name": "food drinks: wine spirits"
              },
              {
                "nameLocale": "en-US",
                "name": "shop"
              }
            ]
          }
        ]
      },
      "address": {
        "streetNumber": "9",
        "streetName": "Calle del Príncipe",
        "municipalitySubdivision": "Madrid",
        "municipality": "Madrid",
        "countrySecondarySubdivision": "Madrid",
        "countrySubdivision": "Comunidad de Madrid",
        "postalCode": "28012",
        "countryCode": "ES",
        "country": "España",
        "countryCodeISO3": "ESP",
        "freeformAddress": "Calle del Príncipe 9, 28012 Madrid",
        "localName": "Madrid"
      },
      "position": {
        "lat": 40.41593,
        "lon": -3.70029
      },
      "viewport": {
        "topLeftPoint": {
          "lat": 40.41683,
          "lon": -3.70147
        },
        "btmRightPoint": {
          "lat": 40.41503,
          "lon": -3.69911
        }
      },
      "entryPoints": [
        {
          "type": "main",
          "position": {
            "lat": 40.41593,
            "lon": -3.70035
          }
        }
      ]
    }
    
    あなたが見ることができるように、このPOI(興味のある点)に関連する豊富な情報が、“カテゴリ”という名前のフィールドにあなたの注意を向ける.これはこの場所が関連する割り当てられたカテゴリの配列です.私がこれをユーザーに提示することができるならば、彼または彼女は将来改良される自動完全な検索を洗練することができます.

    エンドノート


    The Autocomplete feature in the TomTom Search 私たちのAPIの残りの部分に非常に貴重な追加です.我々は、ユーザーがフォーカスを絞り込むことができ、より具体的な結果を得ることができるように、それはあなたのアプリケーションに連続検索結果を提供することがいかに簡単にこの小さな例で見た.
    開発者ポータルの多くの可能性をチェックアウト:開発者.トムトム私たちのフォーラムで質問やコメントを追加することを忘れないでください.トムトムCOM .
    ハッピーマッピング.
    注意:プライバシー保護はTomTomにとって重要であり、開発者ポータル(Developer . tomtom . com)で利用可能なすべてのAPIは、このポリシーを維持します.したがって、あなたのユーザーは、収集されたすべてのデータが私たちのAPIをよりよく(そして、あなたの同意を得て)確認するだけであると安心させられることができます、そして、あなたのアプリケーションで必要とする行動を実行するために必要性だけから.
    この記事はもともと登場したhttps://developer.tomtom.com/blog . 原作者はMagdalena Korczynska .