텍스트 검색 (신규)은 문자열 (예: '뉴욕의 피자', '오타와 근처의 신발 가게' 또는 '중앙로 123')을 기반으로 일련의 장소에 대한 정보를 반환합니다. 이 서비스는 사전에 설정된 텍스트 문자열 및 특정 위치와 일치하는 장소의 목록을 반환합니다.
텍스트 검색 (신규)은 필수 매개변수 외에도 선택적 매개변수를 사용하여 쿼리를 세부적으로 조정하여 더 나은 결과를 얻을 수 있습니다.
텍스트 검색 (신규)은 주변 지역 검색(신규)과 유사합니다. 두 검색의 주요 차이점은 텍스트 검색 (신규)에서는 임의의 검색 문자열을 지정할 수 있지만 주변 검색 (신규)에서는 검색할 특정 영역이 필요하다는 것입니다.
텍스트 검색 요청
Text Search 요청은 다음과 같은 형식입니다.
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME); // Define latitude and longitude coordinates of the search area. LatLng southWest = new LatLng(37.38816277477739, -122.08813770258874); LatLng northEast = new LatLng(37.39580487866437, -122.07702325966572); // Use the builder to create a SearchByTextRequest object. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationRestriction(RectangularBounds.newInstance(southWest, northEast)).build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
이 예시에서는 다음을 수행합니다.
- 필드 목록을 - Place.Field.ID및- Place.Field.DISPLAY_NAME만 포함하도록 설정합니다. 즉, 일치하는 각 장소를 나타내는 응답의- Place객체에는 이 두 필드만 포함됩니다.
- SearchByTextRequest.Builder를 사용하여 검색을 정의하는- SearchByTextRequest객체를 만듭니다.- 텍스트 쿼리 문자열을 '매운 채식 음식'으로 설정합니다. 
- 결과 장소의 최대 수를 10으로 설정합니다. 기본값과 최댓값은 20입니다. 
- 위도 및 경도 좌표로 정의된 직사각형으로 검색 영역을 제한합니다. 이 영역 외부의 일치 항목은 반환되지 않습니다. 
 
- OnSuccessListener를 추가하고- SearchByTextResponse객체에서 일치하는 장소를 가져옵니다.
텍스트 검색 응답
SearchByTextResponse 클래스는 검색 요청의 응답을 나타냅니다. SearchByTextResponse 객체에는 다음이 포함됩니다.
- 일치하는 모든 장소를 나타내는 - Place객체 목록입니다. 일치하는 장소당 하나의- Place객체가 있습니다.
- 각 - Place객체에는 요청에 전달된 필드 목록으로 정의된 필드만 포함됩니다.
예를 들어 요청에서 필드 목록을 다음과 같이 정의했습니다.
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
이 필드 목록은 응답의 각 Place 객체에 일치하는 각 장소의 장소 ID와 이름만 포함된다는 것을 의미합니다. 그런 다음 Place.getId() 및 Place.getName() 메서드를 사용하여 각 Place 객체의 필드에 액세스할 수 있습니다.
Place 객체에서 데이터에 액세스하는 다른 예는 장소 객체 데이터 필드 액세스를 참고하세요.
필수 매개변수
SearchByTextRequest에 필요한 매개변수는 다음과 같습니다.
- 
    필드 목록반환할 장소 데이터 필드를 지정합니다. 반환할 데이터 필드를 지정하는 Place.Field값의 목록을 전달합니다. 응답에 반환된 필드의 기본 목록이 없습니다.필드 목록을 사용하면 불필요한 데이터의 요청을 방지하여 불필요한 처리에 드는 시간과 요금을 막을 수 있습니다. 다음 필드 중 하나 이상을 지정합니다. - 다음 필드는 Text Search Essentials ID Only SKU를 트리거합니다. - Place.Field.DISPLAY_NAME*
 *- Place.Field.NAME(버전 4.0에서 지원 중단됨) 대신 사용하세요.
 - Place.Field.ID
 - Place.Field.RESOURCE_NAME*
 * 장소 리소스 이름이- places/PLACE_ID형식으로 포함됩니다.
 - DISPLAY_NAME을 사용하여 장소의 텍스트 이름에 액세스합니다.
- 다음 필드는 Text Search Pro SKU를 트리거합니다. - Place.Field.ACCESSIBILITY_OPTIONS*
 - Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE(지원 중단됨) 대신 사용하세요.
 - Place.Field.ADDRESS_COMPONENTS
 - Place.Field.ADR_FORMAT_ADDRESS
 - Place.Field.BUSINESS_STATUS
 - Place.Field.FORMATTED_ADDRESS*
 - Place.Field.ADDRESS(지원 중단됨) 대신 사용하세요.
 - Place.Field.GOOGLE_MAPS_URI
 - Place.Field.ICON_BACKGROUND_COLOR
 - Place.Field.ICON_MASK_URL*
 - Place.Field.ICON_URL(지원 중단됨) 대신 사용하세요.
 - Place.Field.LOCATION*
 - Place.Field.LAT_LNG(지원 중단됨) 대신 사용하세요.
 - Place.Field.PHOTO_METADATAS
 - Place.Field.PLUS_CODE
 - Place.Field.PRIMARY_TYPE
 - Place.Field.PRIMARY_TYPE_DISPLAY_NAME
 - Place.Field.SHORT_FORMATTED_ADDRESS
 - Place.Field.SUB_DESTINATIONS
 - Place.Field.TYPES
 - Place.Field.UTC_OFFSET
 - Place.Field.VIEWPORT
- 다음 필드는 Text Search Enterprise SKU를 트리거합니다. - Place.Field.CURRENT_OPENING_HOURS
 - Place.Field.CURRENT_SECONDARY_OPENING_HOURS
 - Place.Field.INTERNATIONAL_PHONE_NUMBER*
 * 지원 중단된- Place.Field.PHONE_NUMBER대신 사용하세요.
 - Place.Field.NATIONAL_PHONE_NUMBER
 - Place.Field.OPENING_HOURS
 - Place.Field.PRICE_LEVEL
 - Place.Field.RATING
 - Place.Field.SECONDARY_OPENING_HOURS
 - Place.Field.USER_RATING_COUNT*
 * 지원 중단된- Place.Field.USER_RATINGS_TOTAL대신 사용하세요.
 - Place.Field.WEBSITE_URI
- 다음 필드는 Text Search Enterprise Plus SKU를 트리거합니다. - Place.Field.ALLOWS_DOGS
 - Place.Field.CURBSIDE_PICKUP
 - Place.Field.DELIVERY
 - Place.Field.DINE_IN
 - Place.Field.EDITORIAL_SUMMARY
 - Place.Field.EV_CHARGE_OPTIONS
 - Place.Field.FUEL_OPTIONS
 - Place.Field.GOOD_FOR_CHILDREN
 - Place.Field.GOOD_FOR_GROUPS
 - Place.Field.GOOD_FOR_WATCHING_SPORTS
 - Place.Field.LIVE_MUSIC
 - Place.Field.MENU_FOR_CHILDREN
 - Place.Field.OUTDOOR_SEATING
 - Place.Field.PARKING_OPTIONS
 - Place.Field.PAYMENT_OPTIONS
 - Place.Field.RESERVABLE
 - Place.Field.RESTROOM
 - Place.Field.REVIEWS
 - Place.Field.SERVES_BEER
 - Place.Field.SERVES_BREAKFAST
 - Place.Field.SERVES_BRUNCH
 - Place.Field.SERVES_COCKTAILS
 - Place.Field.SERVES_COFFEE
 - Place.Field.SERVES_DESSERT
 - Place.Field.SERVES_DINNER
 - Place.Field.SERVES_LUNCH
 - Place.Field.SERVES_VEGETARIAN_FOOD
 - Place.Field.SERVES_WINE
 - Place.Field.TAKEOUT
 필드 목록 매개변수를 설정하려면 SearchByTextRequest객체를 빌드할 때setPlaceFields()메서드를 호출합니다.
- 
    텍스트 쿼리검색할 텍스트 문자열(예: '음식점', '중앙로 123', '샌프란시스코에서 방문하기 좋은 곳'). API는 이 문자열을 기반으로 일치 가능성이 있는 항목을 반환하고 감지된 관련성을 기반으로 검색 결과를 정렬합니다. 텍스트 쿼리 매개변수를 설정하려면 SearchByTextRequest객체를 빌드할 때setTextQuery()메서드를 호출합니다.
선택적 매개변수
SearchByTextRequest 객체를 사용하여 요청의 선택적 매개변수를 지정합니다.
- 포함된 유형- 표 A에 정의된 지정된 유형과 일치하는 장소로 결과를 제한합니다. 한 유형만 지정할 수 있습니다. 예를 들면 다음과 같습니다. - setIncludedType("bar")
- setIncludedType("pharmacy")
 - 포함된 유형 매개변수를 설정하려면 - SearchByTextRequest객체를 빌드할 때- setIncludedType()메서드를 호출합니다.
- 위치 편향- 검색할 영역을 지정합니다. 이 위치는 편향으로 작용하므로 지정된 지역 외부의 결과를 포함하여 지정된 위치 주변의 결과가 반환될 수 있습니다. - 위치 제한 또는 위치 편향을 지정할 수 있지만 둘 다 지정할 수는 없습니다. 위치 제한은 결과가 있어야 하는 지역을 지정하는 것으로, 위치 편향은 결과가 있을 가능성이 높은 지역을 지정하는 것으로 생각하면 됩니다. 위치 편향을 사용하더라도 결과가 지정된 지역 외부에 있을 수 있다는 점에 유의하세요. - 영역을 직사각형 뷰포트 또는 원으로 지정합니다. - 원은 중심점과 반지름(미터)으로 정의됩니다. 반지름은 0.0 이상 50000.0 이하여야 합니다. 예를 들면 다음과 같습니다. - // Define latitude and longitude coordinates of the center of the search area. LatLng searchCenter = new LatLng(37.38816277477739, -122.08813770258874); // Use the builder to create a SearchByTextRequest object. // Set the radius of the search area to 500.0 meters. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationBias(CircularBounds.newInstance(searchCenter, 500.0)).build(); 
- 직사각형은 대각선으로 반대되는 두 개의 하한 및 상한 지점으로 표현되는 위도-경도 표시 영역입니다. 낮은 점은 직사각형의 남서쪽 모서리를 표시하고 높은 점은 직사각형의 북동쪽 모서리를 나타냅니다. - 표시 영역은 경계를 포함하는 닫힌 영역으로 간주됩니다. 위도 범위는 -90~90도(포함)여야 하고 경도 범위는 -180~180도(포함)여야 합니다. - low=- high이면 표시 영역은 단일 점으로 구성됩니다.
- low.longitude>- high.longitude인 경우 경도 범위가 반전됩니다 (표시 영역이 180도 경도선을 교차함).
- low.longitude= -180도이고- high.longitude= 180도인 경우 뷰포트에는 모든 경도가 포함됩니다.
- low.longitude= 180도이고- high.longitude= -180도이면 경도 범위가 비어 있습니다.
- low.latitude>- high.latitude이면 위도 범위가 비어 있습니다.
 - 최저 값과 최고 값 모두 채워야 하며 표시된 상자는 비워 둘 수 없습니다. 빈 뷰포트는 오류를 발생시킵니다. - 예를 들어 직사각형 뷰포트의 경우 텍스트 검색 요청을 참고하세요. - 위치 편향 매개변수를 설정하려면 - SearchByTextRequest객체를 빌드할 때- setLocationBias()메서드를 호출합니다.
 
- 위치 제한- 검색할 영역을 지정합니다. 지정된 영역 외부의 결과는 반환되지 않습니다. 영역을 직사각형 표시 영역으로 지정합니다. 뷰포트 정의에 관한 자세한 내용은 위치 편향 설명을 참고하세요. - 위치 제한 또는 위치 편향을 지정할 수 있지만 둘 다 지정할 수는 없습니다. 위치 제한은 결과가 포함되어야 하는 지역을 지정하는 것으로, 위치 편향은 결과가 근처에 있어야 하지만 영역 외부에 있을 수도 있는 지역을 지정하는 것으로 생각하면 됩니다. - 위치 제한 매개변수를 설정하려면 - SearchByTextRequest객체를 빌드할 때- setLocationRestriction()메서드를 호출합니다.
- 
    최대 결과 수반환할 최대 장소 결과 수를 지정합니다. 1~20 (기본값) 사이여야 합니다. 최대 결과 수 매개변수를 설정하려면 SearchByTextRequest객체를 빌드할 때setMaxResultCount()메서드를 호출합니다.
- 최하 등급- 평균 사용자 평가가 이 한도보다 크거나 같은 결과로만 제한합니다. 값은 0.0~5.0 (포함) 사이여야 하며 0.5씩 증가해야 합니다. 예: 0, 0.5, 1.0, ... , 5.0(포함) 값은 가장 가까운 0.5로 올림됩니다. 예를 들어 값이 0.6이면 등급이 1.0 미만인 결과가 모두 삭제됩니다. - 최소 등급 매개변수를 설정하려면 - SearchByTextRequest객체를 빌드할 때- setMinRating()메서드를 호출합니다.
- 지금 영업 중- true인 경우 쿼리가 전송된 시점에 영업 중인 장소만 반환합니다.- false인 경우 영업 상태와 관계없이 모든 비즈니스를 반환합니다. 이 매개변수를- false로 설정하면 Google 지역 정보 데이터베이스에 영업시간을 지정하지 않은 장소가 반환됩니다.- 지금 영업 중 매개변수를 설정하려면 - SearchByTextRequest객체를 빌드할 때- setOpenNow()메서드를 호출합니다.
- 
    가격 수준기본적으로 결과에는 모든 가격대의 서비스를 제공하는 장소가 포함됩니다. 특정 가격대의 장소만 포함하도록 결과를 제한하려면 반환하려는 장소의 가격대에 해당하는 정수 값 목록을 전달하면 됩니다. - 1- 저렴한 서비스를 제공하는 장소입니다.
- 2- 적당한 가격의 서비스를 제공하는 장소입니다.
- 3- 장소에서 비싼 서비스를 제공합니다.
- 4- 장소에서 매우 비싼 서비스를 제공합니다.
 가격대 매개변수를 설정하려면 SearchByTextRequest객체를 빌드할 때setPriceLevels()메서드를 호출합니다.
- 순위 환경설정- 결과가 응답에서 순위가 매겨지는 방식을 지정합니다(쿼리 유형에 따라 다름). - '뉴욕시의 레스토랑'과 같은 카테고리별 쿼리의 경우 SearchByTextRequest.RankPreference.RELEVANCE(검색 관련성을 기준으로 검색 결과 순위 지정)가 기본값입니다. 순위 기본 설정을SearchByTextRequest.RankPreference.RELEVANCE또는SearchByTextRequest.RankPreference.DISTANCE(거리별로 결과 순위 지정)으로 설정할 수 있습니다.
- '캘리포니아 마운틴뷰'와 같은 카테고리가 없는 쿼리의 경우 순위 선호도 매개변수를 설정하지 않는 것이 좋습니다.
 - 순위 선호도 매개변수를 설정하려면 - SearchByTextRequest객체를 빌드할 때- setRankPreference()메서드를 호출합니다.
- '뉴욕시의 레스토랑'과 같은 카테고리별 쿼리의 경우 
- 지역 코드- 대답의 형식을 지정하는 데 사용되는 지역 코드입니다. 2자리 CLDR 코드 값으로 지정됩니다. 이 매개변수는 검색 결과에 편향 효과를 줄 수도 있습니다. 기본값은 없습니다. - 응답의 주소 필드의 국가 이름이 지역 코드와 일치하면 국가 코드가 주소에서 생략됩니다. - 대부분의 CLDR 코드는 ISO 3166-1 코드와 동일하지만 일부 주목할 만한 예외가 있습니다. 예를 들어 영국의 ccTLD는 'uk' (.co.uk)이지만 ISO 3166-1 코드는 'gb' (기술적으로 '영국' 법인의 경우)입니다. 이 매개변수는 관련 법규에 따라 결과에 영향을 미칠 수 있습니다. - 지역 코드 매개변수를 설정하려면 - SearchByTextRequest객체를 빌드할 때- setRegionCode()메서드를 호출합니다.
- 엄격한 유형 필터링- include type 매개변수와 함께 사용됩니다. - true로 설정하면 include type으로 지정된 지정된 유형과 일치하는 장소만 반환됩니다. 기본값인- false인 경우 응답에 지정된 유형과 일치하지 않는 장소가 포함될 수 있습니다.- 엄격한 유형 필터링 매개변수를 설정하려면 - SearchByTextRequest객체를 빌드할 때- setStrictTypeFiltering()메서드를 호출합니다.