검색 API를 사용한 자동 완성 및 권장 사항

Seacrch API를 사용하여 자동 완성 및 권장 사항 제공



우리는 앞서 지난 기사 Understanding Fuzzy Search에서 TomTom 검색 API에 대해 논의했다.
오늘 Search Autocomplete API에 대해 더 자세히 살펴보겠습니다. 이 기능을 통해 추적 없이 보다 의미 있는 결과를 얻을 수 있습니다.*
autocomplete 단점은 사용자가 찾을 수 있는 관련 종류를 제공함으로써 모호한 검색의 '미리 입력' 인자를 보충합니다.이 매개 변수에 대한 설명은 다음과 같습니다.

검색이 예측 모드에 들어갈 때, 더 많은 일치하는 결과를 제공할 것입니다.

우선 API의 기술적 측면


이 노드의 문서는 개발자 포털 https://developer.tomtom.com/search-api/search-api-documentation/autocomplete에서 찾을 수 있습니다
이 REST API 호출은 HTTPS-GET를 사용하며 최소 매개변수가 있습니다.

만약 우리가 포도주 상점을 찾기 시작한다면.그래서 나는'wine'을 입력하기 시작했다. 네 번째 문자에서 우리는 조언을 제공하기로 결정했다.내가 마드리드에 있기 때문에, 예시 전화는 다음과 같다.
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"
        }
      ]
    }
  ]
}
결과를 검토해 보겠습니다.
  • 세 부분을 봤어요.
  • 은 모두 범주에 속합니다.
  • 문서에 근거하여 우리는 세 가지 서로 다른 유형의 결과를 얻을 수 있는데 그것이 바로 브랜드, 유형과 순수한 텍스트이다.
    "예를 들어""jim""이라는 용어를 검색하면 다음과 같은 몇 개의 브랜드를 의미한다고 가정할 수 있습니다."
    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
                  }
                ]
              }
            }
          ]
        }
      ]
    }
    
    우리의 투입에 따라 여기에 몇 개의 브랜드가 있다."계속 입력하고""jimm""을 사용하여 다음 질의를 수행하면 다음과 같은 결과가 나타납니다."
    {
      "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'을 추가한 후 명단에서 사라졌고, 우리는 새로운'지미 킬러 새우'브랜드 명칭을 가지게 되었다.
    문서에서 지정한 원본 검색 (wine) 으로 돌아가면 기본적으로 5개의 결과만 얻을 수 있습니다.내 사용자가 필요로 하는 것은 이것뿐만이 아니라고 생각하기 때문에 다음에 아마도 나는 10개를 시도할 것이다.
    나의 첫 번째 시도로 돌아가서, 나는 선택할 수 있는 매개 변수 (마드리드의 가장 중심에 있는 라트와 랑그: 태양문) 를 추가했다.다음에 우리는 선택할 수 있는 매개 변수를 소개할 것이다.

    옵션 매개변수


    다음 옵션 매개변수를 살펴보겠습니다.

    그렇다면 위치구역을 국가(ES=스페인)로 교환하고 10개의 결과에 대한 제한을 추가하면 우리가 얻는 것을 살펴본다.
    내 새 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"
            }
          ]
        }
      ]
    }
    
    그리고... 예전과 똑같아!적어도 나는 일치성을 보았다.(이 분류들은 스페인의 데이터베이스에 있다.)이 세 가지 클래스가 있으면 사용자에게 보여줄 수 있습니다. 그 중 하나를 선택하면 세션에서 제공하는 '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을 자세히 살펴보겠습니다.
  • 나는 검색에서 어떤 텍스트도 전달하지 않았다. 나는 이 분류에서 가능한 모든 POI가 이 위치 근처에 있기를 바란다.
  • 이 카테고리는 옵션 매개 변수 "category Set"
  • 에 추가됨
    현재 이 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와 관련된 정보가 많지만, '클래스' 라는 필드를 주의하십시오.이 위치와 관련된 지정한 분류 그룹입니다.만약 내가 사용자에게 이 점을 보여줄 수 있다면, 그나 그녀는 장래에 개선될 수 있도록 자동적으로 검색을 완성할 수 있을 것이다.

    미주


    Autocomplete feature in the TomTom Search은 다른 API에 대한 매우 가치 있는 보완 자료입니다.이 작은 예에서 우리는 응용 프로그램에 연속적인 검색 결과를 제공하는 것이 얼마나 쉬운지 보았다. 그러면 사용자는 관심 범위를 좁히고 더욱 구체적인 결과를 얻을 수 있다.
    우리 개발자 포털: 개발자에서 다양한 가능성을 볼 수 있습니다.톰.com, 우리 포럼 devforum에 질문과 평론을 추가하는 것을 잊지 마세요.톰.일반 도메인 이름 형식.
    즐거운 지도.. 검색!
    *참고: 개인 정보 보호는 TomTom에 매우 중요합니다. 개발자 포털(developer.TomTom.com)의 모든 사용 가능한 API가 이 정책을 준수하면 사용자는 안심할 수 있습니다. 수집한 모든 데이터는 저희 API를 더욱 좋게 하기 위한 것일 뿐 아니라 응용 프로그램의 실행에 필요한 조작을 수행하기 위한 것입니다.
    본문은 최초로 https://developer.tomtom.com/blog에 발표되었다.원작자는 Magdalena Korczynska이다.

    좋은 웹페이지 즐겨찾기