ค้นหาข้อความ (ใหม่)

การค้นหาข้อความ (ใหม่) จะแสดงข้อมูลเกี่ยวกับชุดของ สถานที่ตามสตริง เช่น "พิซซ่าในกรุงเทพ" หรือ "ร้านรองเท้า" ใกล้ออตตาวา" หรือ "123 Main Street" บริการตอบสนองด้วยรายการสถานที่ การจับคู่สตริงข้อความและความเอนเอียงของตำแหน่งที่ตั้งไว้

บริการนี้มีประโยชน์มากในการทำให้ที่อยู่ที่คลุมเครือ คำค้นหาในระบบอัตโนมัติ และคอมโพเนนต์ที่ไม่ใช่ที่อยู่ของสตริงอาจตรงกับธุรกิจ ที่อยู่ ตัวอย่างของข้อความค้นหาที่อยู่ที่ไม่ชัดเจนคือที่อยู่ที่มีรูปแบบไม่ถูกต้อง หรือคำขอที่มีองค์ประกอบที่ไม่ใช่ที่อยู่ เช่น ชื่อธุรกิจ คำขอ เช่น 2 ตัวอย่างแรกอาจไม่แสดงผลลัพธ์ นอกจากว่าสถานที่ — เช่น ภูมิภาค การจำกัดตำแหน่ง หรือการให้น้ำหนักพิเศษของตำแหน่ง —

การค้นหาข้อความ (ใหม่) คล้ายกับการค้นหาใกล้เคียง (ใหม่) องค์ประกอบหลัก ความแตกต่างระหว่างเครื่องมือทั้งสองก็คือการค้นหาข้อความ (ใหม่) จะช่วยให้คุณระบุสตริงการค้นหาที่กำหนดเองได้ในขณะที่การค้นหาใกล้เคียง (ใหม่) ต้องใช้ เฉพาะพื้นที่ที่ต้องการค้นหา

"10 ถนนวิทยุ เขตปทุมวัน กรุงเทพฯ" หรือ "123 Main Street, US" "High Street" หลายแห่งในสหราชอาณาจักร "ถนนหลัก" หลายแห่งในสหรัฐอเมริกา การค้นหาไม่แสดงผลการค้นหาที่ต้องการ เว้นแต่จะมีข้อจำกัดเกี่ยวกับตำแหน่ง ตั้งค่า
"แฟรนไชส์ร้านอาหารนิวยอร์ก" "ร้านอาหารแฟรนไชส์" หลายร้าน สถานที่ตั้งในนิวยอร์ก ไม่มีที่อยู่ หรือ แม้แต่ชื่อถนน
"10 High Street, Escher UK" หรือ "123 Main Street, Pleasanton US" "High Street" เพียงรายการเดียว ในเมืองเอเชอร์ของสหราชอาณาจักร "Main Street" เพียงแห่งเดียวเท่านั้น ใน Pleasanton แคลิฟอร์เนีย
"UniqueRestaurantName New York" มีสถานประกอบการเพียงแห่งเดียวที่ใช้ชื่อนี้ในนิวยอร์ก ไม่มีที่อยู่ ที่ต้องแยกความแตกต่าง
"ร้านพิซซ่าในหัวหิน" คำค้นหานี้มีการจำกัดตำแหน่ง และ "ร้านพิซซ่า" เท่ากับ ประเภทสถานที่ที่กำหนดไว้อย่างชัดเจน แสดงผลการค้นหาหลายรายการ
"+1 514-670-8700"

การค้นหานี้มีหมายเลขโทรศัพท์ แสดงผลการค้นหาหลายรายการสำหรับ ที่เชื่อมโยงกับหมายเลขโทรศัพท์นั้น

คำขอค้นหาข้อความ

คำขอค้นหาข้อความอยู่ในรูปแบบดังนี้

// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.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.NAME ซึ่งหมายความว่าออบเจ็กต์ Place ในคำตอบที่แสดงการจับคู่แต่ละรายการ จะมีเพียง 2 ฟิลด์เท่านั้น

  • ใช้ SearchByTextRequest.Builder เพื่อสร้าง SearchByTextRequest ที่กำหนดการค้นหา

    • ตั้งค่าสตริงการค้นหาเป็น "อาหารมังสวิรัติสไปซี่"

    • ตั้งค่าจำนวนตำแหน่งผลลัพธ์สูงสุดไว้ที่ 10 ตำแหน่ง ค่าเริ่มต้นและ สูงสุดคือ 20

    • จำกัดพื้นที่ที่ค้นหาเป็นสี่เหลี่ยมผืนผ้าซึ่งกำหนดด้วยละติจูดและ พิกัดลองจิจูด ระบบจะไม่แสดงผลรายการที่ตรงกันนอกพื้นที่นี้

  • เพิ่ม OnSuccessListener และรับสถานที่ที่ตรงกันจาก SearchByTextResponse ออบเจ็กต์

การตอบกลับการค้นหาข้อความ

SearchByTextResponse คลาสจะแสดงการตอบกลับจากคำขอการค้นหา SearchByTextResponse ออบเจ็กต์ประกอบด้วย:

  • รายการ Place ที่แสดงสถานที่ที่ตรงกันทั้งหมด โดยมี 1 รายการ Place ออบเจ็กต์ต่อสถานที่ที่ตรงกัน

  • ออบเจ็กต์ Place แต่ละรายการจะมีเพียงช่องที่กำหนดโดยรายการช่องเท่านั้น ในคำขอ

ตัวอย่างเช่น คุณได้กำหนดรายการช่องในคำขอดังนี้

// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

รายการช่องนี้หมายความว่าออบเจ็กต์ Place แต่ละรายการในการตอบกลับมีเฉพาะ ชื่อสถานที่ และชื่อของสถานที่แต่ละแห่งที่ตรงกัน จากนั้นคุณสามารถใช้ Place.getId() และ Place.getName() วิธีในการเข้าถึงช่องเหล่านี้ในออบเจ็กต์ Place แต่ละรายการ

สำหรับตัวอย่างเพิ่มเติมของการเข้าถึงข้อมูลในออบเจ็กต์ Place โปรดดูการเข้าถึงสถานที่ ช่องข้อมูลออบเจ็กต์

พารามิเตอร์ที่จำเป็น

พารามิเตอร์ที่จำเป็นสำหรับ SearchByTextRequest ได้แก่

  • รายการช่อง

    ระบุฟิลด์ข้อมูลสถานที่ที่จะแสดง ส่งรายการ Place.Field ซึ่งระบุฟิลด์ข้อมูลที่จะแสดง ไม่มีรายการเริ่มต้นของ แสดงผลฟิลด์ในคำตอบ

    รายการช่องเป็นแนวทางปฏิบัติที่ดีในการออกแบบเพื่อให้คุณไม่ต้องขอ ข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาประมวลผลที่ไม่จำเป็น ค่าใช้จ่ายที่เรียกเก็บจากคุณ

    ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง

    หากต้องการตั้งค่าพารามิเตอร์รายการช่อง ให้เรียกเมธอด setPlaceFields() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • การค้นหาข้อความ

    สตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" "123 ถนนสุขุมวิท" หรือ "สถานที่ที่น่าไปที่สุดในกรุงเทพมหานคร" API จะแสดงผลการจับคู่คำที่รอการพิจารณาตามสตริงนี้และเรียงลำดับผลลัพธ์ตาม ถึงความเกี่ยวข้องที่รับรู้ได้

    หากต้องการตั้งค่าพารามิเตอร์การค้นหาข้อความ ให้เรียกเมธอด setTextQuery() เมื่อสร้างวัตถุ SearchByTextRequest

พารามิเตอร์ที่ไม่บังคับ

ใช้เมนู SearchByTextRequest เพื่อระบุพารามิเตอร์ที่เป็นตัวเลือกสำหรับคำขอของคุณ

  • ประเภทที่รวม

    จำกัดผลการค้นหาเฉพาะตำแหน่งที่ตรงกับประเภทที่ระบุซึ่งกำหนดโดย ตาราง ก ระบุได้เพียงประเภทเดียวเท่านั้น เช่น

    • setIncludedType("bar")
    • setIncludedType("pharmacy")

    หากต้องการตั้งค่าพารามิเตอร์ประเภทที่รวม ให้เรียกเมธอด setIncludedType() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • ความเอนเอียงของตำแหน่ง

    ระบุพื้นที่ที่จะค้นหา ตำแหน่งนี้ก่อให้เกิดความลำเอียง ซึ่งหมายความว่า ผลลัพธ์ที่อยู่รอบๆ ตำแหน่งที่ระบุสามารถแสดงผลได้ รวมถึงผลลัพธ์ นอกพื้นที่ที่ระบุ

    คุณสามารถระบุข้อจำกัดตำแหน่ง หรือการให้น้ำหนักพิเศษกับสถานที่ได้ แต่ไม่ใช่ทั้ง 2 อย่าง ให้คิดว่าการจำกัดการเข้าถึงสถานที่เป็นการระบุ ภูมิภาคที่ผลการค้นหาต้องอยู่ภายใน และความเอนเอียงของตำแหน่ง ระบุภูมิภาคที่ผลลัพธ์ต้องอยู่ใกล้แต่สามารถอยู่ภายนอก พื้นที่นั้น

    ระบุพื้นที่เป็นวิวพอร์ตสี่เหลี่ยมผืนผ้าหรือวงกลม

    • วงกลมกำหนดด้วยจุดศูนย์กลางและรัศมีเป็นเมตร รัศมี ต้องอยู่ระหว่าง 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 ไม่มีข้อมูลช่วงละติจูด

      ต้องป้อนข้อมูลทั้ง "ต่ำ" และ "สูง" และไม่สามารถเลือก ว่างเปล่า วิวพอร์ตที่ว่างเปล่าจะทำให้เกิดข้อผิดพลาด

      ตัวอย่างเช่น สำหรับวิวพอร์ตรูปสี่เหลี่ยมผืนผ้าจะเห็น คำขอการค้นหาข้อความ

      หากต้องการตั้งค่าพารามิเตอร์ความเอนเอียงของตำแหน่ง ให้เรียกเมธอด setLocationBias() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • การจำกัดตำแหน่ง

    ระบุพื้นที่ที่จะค้นหา ผลลัพธ์นอกพื้นที่ที่ระบุไม่ได้ ส่งคืนแล้ว ระบุพื้นที่เป็นวิวพอร์ตสี่เหลี่ยมผืนผ้า ดูคำอธิบาย ของความลำเอียงของตำแหน่ง สำหรับข้อมูลเกี่ยวกับการกำหนดวิวพอร์ต

    คุณสามารถระบุข้อจำกัดตำแหน่ง หรือการให้น้ำหนักพิเศษกับสถานที่ได้ แต่ไม่ใช่ทั้ง 2 อย่าง ให้คิดว่าการจำกัดการเข้าถึงสถานที่เป็นการระบุ ภูมิภาคที่ผลการค้นหาต้องอยู่ภายใน และความเอนเอียงของตำแหน่ง ระบุภูมิภาคที่ผลลัพธ์จะต้องอยู่ใกล้ แต่สามารถอยู่ภายนอกได้ พื้นที่นั้น

    หากต้องการตั้งค่าพารามิเตอร์การจำกัดตำแหน่ง ให้เรียกเมธอด setLocationRestriction() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • จำนวนผลลัพธ์สูงสุด

    ระบุจำนวนสูงสุดของผลลัพธ์สถานที่ที่จะแสดง ต้องอยู่ระหว่าง 1 และ 20 (ค่าเริ่มต้น)

    หากต้องการตั้งค่าพารามิเตอร์จำนวนผลลัพธ์สูงสุด ให้เรียกเมธอด setMaxResultCount() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • คะแนนขั้นต่ำ

    จำกัดผลการค้นหาให้แสดงเฉพาะผู้ที่มีคะแนนเฉลี่ยมากกว่า หรือเท่ากับขีดจำกัดนี้ ค่าต้องอยู่ระหว่าง 0.0 ถึง 5.0 (รวม) ทีละ 0.5 เช่น 0, 0.5, 1.0, ... , 5.0 ค่าต่างๆ ได้แก่ ปัดเศษขึ้นให้เป็นค่า 0.5 ที่ใกล้เคียงที่สุด เช่น ค่า 0.6 จะลบทั้งหมด ผลลัพธ์ที่มีคะแนนต่ำกว่า 1.0

    หากต้องการตั้งค่าพารามิเตอร์การให้คะแนนขั้นต่ำ ให้เรียกเมธอด setMinRating() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • เปิดอยู่

    หากเป็น true ให้ส่งคืนเฉพาะสถานที่ที่เปิดให้บริการเท่านั้น ในเวลาที่มีการส่งคำถาม หากเป็น false ให้ส่งคืนธุรกิจทั้งหมด โดยไม่คํานึงถึงสถานะเปิด สถานที่ที่ไม่ได้ระบุเวลาทำการในฐานข้อมูล Google สถานที่ แสดงผลหากคุณตั้งค่าพารามิเตอร์นี้เป็น false

    หากต้องการตั้งค่าพารามิเตอร์ Open Now ให้เรียกเมธอด setOpenNow() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • ระดับราคา

    โดยค่าเริ่มต้น ผลการค้นหาจะรวมสถานที่ที่ให้บริการทุกระดับราคา เพื่อจำกัด ผลลัพธ์ให้รวมเฉพาะสถานที่ที่อยู่ในระดับราคาที่ระบุเท่านั้น คุณสามารถส่งรายการ ของค่าจำนวนเต็มที่ตรงกับระดับราคาสำหรับสถานที่ที่คุณต้องการแสดงผล ดังนี้

    • 1 - สถานที่ให้บริการที่ไม่แพง
    • 2 - สถานที่ให้บริการในราคาปานกลาง
    • 3 - สถานที่ให้บริการที่มีค่าใช้จ่ายสูง
    • 4 - สถานที่ให้บริการที่มีราคาแพงมาก

    หากต้องการตั้งค่าพารามิเตอร์ระดับราคา ให้เรียกเมธอด setPriceLevels() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • อันดับที่ต้องการ

    ระบุวิธีจัดอันดับผลลัพธ์ในการตอบกลับตามประเภทของ ข้อความค้นหา:

    • สําหรับการค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในหัวหิน" SearchByTextRequest.RankPreference.RELEVANCE (จัดอันดับผลการค้นหาตามความเกี่ยวข้องของการค้นหา) เป็นค่าเริ่มต้น คุณตั้งค่ากำหนดอันดับเป็น SearchByTextRequest.RankPreference.RELEVANCE หรือ SearchByTextRequest.RankPreference.DISTANCE (จัดอันดับผลการค้นหาตามระยะทาง)
    • สำหรับคำค้นหาที่ไม่ใช่หมวดหมู่ เช่น "Mountain View, CA" เราขอแนะนำ คุณไม่ต้องตั้งค่าพารามิเตอร์อันดับที่ต้องการ

    หากต้องการตั้งค่าพารามิเตอร์ค่ากำหนดอันดับ ให้เรียกเมธอด setRankPreference() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • รหัสภูมิภาค

    รหัสภูมิภาคที่ใช้ในการจัดรูปแบบการตอบกลับ ระบุเป็น ค่ารหัส CLDR แบบ 2 อักขระ นอกจากนี้ พารามิเตอร์นี้อาจทำให้เกิดการให้น้ำหนักพิเศษด้วย ในผลการค้นหา ไม่มีค่าเริ่มต้น

    ถ้าชื่อประเทศของฟิลด์ที่อยู่ในการตอบกลับตรงกับ รหัสภูมิภาค รหัสประเทศจะไม่แสดงในที่อยู่

    รหัส CLDR ส่วนใหญ่เหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นบางประการเด่นๆ ตัวอย่างเช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ในขณะที่รหัส ISO 3166-1 คือ "gb" (โดยทางเทคนิคสำหรับ นิติบุคคล "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง

    หากต้องการตั้งค่าพารามิเตอร์รหัสภูมิภาค ให้เรียกเมธอด setRegionCode() เมื่อสร้างออบเจ็กต์ SearchByTextRequest

  • การกรองประเภทที่เข้มงวด

    ใช้กับพารามิเตอร์ประเภทรวม เมื่อตั้งค่าเป็น true เฉพาะสถานที่ที่ตรงกับประเภทที่ระบุโดย แสดงประเภทการรวม เมื่อ false คำตอบมีค่าเริ่มต้นเป็นตำแหน่ง ไม่ตรงกับประเภทที่ระบุ

    หากต้องการตั้งค่าพารามิเตอร์การกรองประเภทแบบเข้มงวด ให้เรียกใช้เมธอด setStrictTypeFiltering() เมื่อสร้างออบเจ็กต์ SearchByTextRequest