Cara menggunakan rint in python

Lompati ke konten utama

Browser ini sudah tidak didukung.

Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.

Mulai Cepat: Membuat indeks Azure Cognitive Search di Python menggunakan Jupyter Notebook

  • Artikel
  • 09/27/2022
  • 9 menit untuk membaca

Dalam artikel ini

  • Python
  • PowerShell (REST)
  • C#
  • REST
  • Portal

Dalam latihan ini, buat Jupyter Notebook yang membuat, memuat, dan mengkueri indeks Azure Cognitive Search menggunakan Python dan pustaka azure-search-documents di Azure SDK untuk Python. Artikel ini menjelaskan cara membuat buku catatan langkah demi langkah. Atau, Anda mengunduh dan menjalankan buku catatan Jupyter Python yang sudah selesai.

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Prasyarat

Layanan dan alat berikut digunakan dalam mulai cepat ini.

  • Visual Studio Code dengan ekstensi Python (atau alat yang setara), dengan Python 3.7 atau yang lebih baru

  • paket azure-search-documents dari Azure SDK for Python

  • Buat layanan pencarian atau temukan layanan yang sudah ada dalam langganan Anda saat ini. Anda dapat menggunakan tingkat Gratis untuk mulai cepat ini.

Menyalin kunci dan URL

Untuk menyambungkan ke layanan pencarian Anda, berikan titik akhir dan kunci akses. Layanan pencarian dibuat dengan keduanya, jadi jika Anda menambahkan Azure Cognitive Search ke langganan Anda, ikuti langkah-langkah ini untuk mendapatkan informasi yang diperlukan:

  1. Masuk ke portal Microsoft Azure, dan di halaman Gambaran Umum layanan pencarian Anda, dapatkan URL. Contoh titik akhir mungkin terlihat seperti https://mydemo.search.windows.net.

  2. Di Pengaturan>Kunci, dapatkan kunci admin untuk mendapatkan hak penuh pada layanan. Ada dua kunci admin yang dapat dipertukarkan, yang disediakan untuk kelangsungan bisnis jika Anda perlu menggulirkannya. Anda dapat menggunakan kunci utama atau sekunder di permintaan untuk menambahkan, memodifikasi, dan menghapus objek.

    Cara menggunakan rint in python

Anda akan memberikan nilai-nilai ini di bagian berikutnya saat menyiapkan koneksi.

Dalam tugas ini, buat buku catatan, muat pustaka, dan siapkan klien Anda.

  1. Buat buku catatan Python3 baru di Visual Studio Code:

    1. Tekan F1 dan cari "Python Select Interpreter" dan pilih versi Python 3.7 atau yang lebih baru.
    2. Tekan F1 lagi dan cari "Buat: Buku Catatan Jupyter Baru". Anda harus memiliki file kosong yang tidak berjudul .ipynb terbuka di editor yang siap untuk entri pertama.
  2. Di sel pertama, muat pustaka dari Azure SDK untuk Python, termasuk azure-search-documents.

    %pip install azure-search-documents --pre
    %pip show azure-search-documents
    
    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents.indexes import SearchIndexClient 
    from azure.search.documents import SearchClient
    from azure.search.documents.indexes.models import (
        ComplexField,
        CorsOptions,
        SearchIndex,
        ScoringProfile,
        SearchFieldDataType,
        SimpleField,
        SearchableField
    )
    
  3. Tambahkan sel kedua dan tempelkan informasi koneksi. Sel ini juga menyiapkan klien yang akan Anda gunakan untuk operasi tertentu: SearchIndexClient untuk membuat indeks, dan SearchClient untuk mengkueri indeks.

    service_name = "YOUR-SEARCH-SERVICE-NAME"
    admin_key = "YOUR-SEARCH-SERVICE-ADMIN-API-KEY"
    
    index_name = "hotels-quickstart"
    
    # Create an SDK client
    endpoint = "https://{}.search.windows.net/".format(service_name)
    admin_client = SearchIndexClient(endpoint=endpoint,
                          index_name=index_name,
                          credential=AzureKeyCredential(admin_key))
    
    search_client = SearchClient(endpoint=endpoint,
                          index_name=index_name,
                          credential=AzureKeyCredential(admin_key))
    
  4. Di sel ketiga, jalankan operasi delete_index untuk menghapus layanan Anda dari indeks hotel-quickstart yang ada. Dengan menghapus indeks, Anda dapat membuat indeks hotel-quickstart lain dengan nama yang sama.

    try:
        result = admin_client.delete_index(index_name)
        print ('Index', index_name, 'Deleted')
    except Exception as ex:
        print (ex)
    
  5. Jalankan setiap langkah.

1 - Membuat indeks

Elemen indeks yang diperlukan mencakup nama, koleksi bidang, dan kunci dokumen yang secara unik mengidentifikasi setiap dokumen pencarian. Kumpulan bidang menentukan struktur dokumen pencarian logis untuk memuat data dan mengembalikan hasil.

Dalam kumpulan bidang, setiap bidang memiliki nama, jenis, dan atribut yang menentukan bagaimana bidang digunakan (misalnya, apakah teks lengkap dapat dicari, dapat difilter, atau diambil dalam hasil pencarian). Dalam indeks, salah satu bidang tipe Edm.String harus ditetapkan sebagai kunci untuk identitas dokumen.

Indeks ini diberi nama "hotels-quickstart" dan memiliki definisi bidang yang Anda lihat di bawah ini. Ini adalah subset dari Indeks hotel yang lebih besar yang digunakan di panduan lainnya. Kami memangkasnya dalam mulai cepat ini untuk meringkasnya.

  1. Di sel berikutnya, tempelkan contoh berikut ini ke dalam sel untuk menyediakan skema.

    # Specify the index schema
    name = index_name
    fields = [
            SimpleField(name="HotelId", type=SearchFieldDataType.String, key=True),
            SearchableField(name="HotelName", type=SearchFieldDataType.String, sortable=True),
            SearchableField(name="Description", type=SearchFieldDataType.String, analyzer_name="en.lucene"),
            SearchableField(name="Description_fr", type=SearchFieldDataType.String, analyzer_name="fr.lucene"),
            SearchableField(name="Category", type=SearchFieldDataType.String, facetable=True, filterable=True, sortable=True),
    
            SearchableField(name="Tags", collection=True, type=SearchFieldDataType.String, facetable=True, filterable=True),
    
            SimpleField(name="ParkingIncluded", type=SearchFieldDataType.Boolean, facetable=True, filterable=True, sortable=True),
            SimpleField(name="LastRenovationDate", type=SearchFieldDataType.DateTimeOffset, facetable=True, filterable=True, sortable=True),
            SimpleField(name="Rating", type=SearchFieldDataType.Double, facetable=True, filterable=True, sortable=True),
    
            ComplexField(name="Address", fields=[
                SearchableField(name="StreetAddress", type=SearchFieldDataType.String),
                SearchableField(name="City", type=SearchFieldDataType.String, facetable=True, filterable=True, sortable=True),
                SearchableField(name="StateProvince", type=SearchFieldDataType.String, facetable=True, filterable=True, sortable=True),
                SearchableField(name="PostalCode", type=SearchFieldDataType.String, facetable=True, filterable=True, sortable=True),
                SearchableField(name="Country", type=SearchFieldDataType.String, facetable=True, filterable=True, sortable=True),
            ])
        ]
    cors_options = CorsOptions(allowed_origins=["*"], max_age_in_seconds=60)
    scoring_profiles = []
    suggester = [{'name': 'sg', 'source_fields': ['Tags', 'Address/City', 'Address/Country']}]
    
  2. Di sel lain, rumuskan permintaan. Permintaan create_index ini menargetkan koleksi indeks layanan pencarian Anda dan membuat SearchIndex berdasarkan skema indeks yang Anda berikan di sel sebelumnya.

    index = SearchIndex(
        name=name,
        fields=fields,
        scoring_profiles=scoring_profiles,
        suggesters = suggester,
        cors_options=cors_options)
    
    try:
        result = admin_client.create_index(index)
        print ('Index', result.name, 'created')
    except Exception as ex:
        print (ex)
    
  3. Jalankan setiap langkah.

2 - Memuat dokumen

Untuk memuat dokumen, buat kumpulan dokumen, menggunakan tindakan indeks untuk jenis operasi (unggah, gabungkan-dan-unggah, dan sebagainya). Dokumen berasal dari HotelsData di GitHub.

  1. Dalam sel baru, berikan empat dokumen yang sesuai dengan skema indeks. Tentukan tindakan pengunggahan untuk setiap dokumen.

    documents = [
        {
        "@search.action": "upload",
        "HotelId": "1",
        "HotelName": "Secret Point Motel",
        "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.",
        "Description_fr": "L'hôtel est idéalement situé sur la principale artère commerciale de la ville en plein cœur de New York. A quelques minutes se trouve la place du temps et le centre historique de la ville, ainsi que d'autres lieux d'intérêt qui font de New York l'une des villes les plus attractives et cosmopolites de l'Amérique.",
        "Category": "Boutique",
        "Tags": [ "pool", "air conditioning", "concierge" ],
        "ParkingIncluded": "false",
        "LastRenovationDate": "1970-01-18T00:00:00Z",
        "Rating": 3.60,
        "Address": {
            "StreetAddress": "677 5th Ave",
            "City": "New York",
            "StateProvince": "NY",
            "PostalCode": "10022",
            "Country": "USA"
            }
        },
        {
        "@search.action": "upload",
        "HotelId": "2",
        "HotelName": "Twin Dome Motel",
        "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.",
        "Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.",
        "Category": "Boutique",
        "Tags": [ "pool", "free wifi", "concierge" ],
        "ParkingIncluded": "false",
        "LastRenovationDate": "1979-02-18T00:00:00Z",
        "Rating": 3.60,
        "Address": {
            "StreetAddress": "140 University Town Center Dr",
            "City": "Sarasota",
            "StateProvince": "FL",
            "PostalCode": "34243",
            "Country": "USA"
            }
        },
        {
        "@search.action": "upload",
        "HotelId": "3",
        "HotelName": "Triple Landscape Hotel",
        "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.",
        "Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.",
        "Category": "Resort and Spa",
        "Tags": [ "air conditioning", "bar", "continental breakfast" ],
        "ParkingIncluded": "true",
        "LastRenovationDate": "2015-09-20T00:00:00Z",
        "Rating": 4.80,
        "Address": {
            "StreetAddress": "3393 Peachtree Rd",
            "City": "Atlanta",
            "StateProvince": "GA",
            "PostalCode": "30326",
            "Country": "USA"
            }
        },
        {
        "@search.action": "upload",
        "HotelId": "4",
        "HotelName": "Sublime Cliff Hotel",
        "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.",
        "Description_fr": "Le sublime Cliff Hotel est situé au coeur du centre historique de sublime dans un quartier extrêmement animé et vivant, à courte distance de marche des sites et monuments de la ville et est entouré par l'extraordinaire beauté des églises, des bâtiments, des commerces et Monuments. Sublime Cliff fait partie d'un Palace 1800 restauré avec amour.",
        "Category": "Boutique",
        "Tags": [ "concierge", "view", "24-hour front desk service" ],
        "ParkingIncluded": "true",
        "LastRenovationDate": "1960-02-06T00:00:00Z",
        "Rating": 4.60,
        "Address": {
            "StreetAddress": "7400 San Pedro Ave",
            "City": "San Antonio",
            "StateProvince": "TX",
            "PostalCode": "78216",
            "Country": "USA"
            }
        }
    ]
    
  2. Di sel lain, rumuskan permintaan. Permintaan upload_documents ini menargetkan kumpulan dokumen indeks hotel-quickstart dan mendorong dokumen yang disediakan dalam langkah sebelumnya ke indeks Cognitive Search.

    try:
        result = search_client.upload_documents(documents=documents)
        print("Upload of new document succeeded: {}".format(result[0].succeeded))
    except Exception as ex:
        print (ex.message)
    
  3. Jalankan setiap langkah untuk mendorong dokumen ke indeks di layanan pencarian Anda.

3 - Mencari indeks

Langkah ini menunjukkan cara mengkueri indeks menggunakan metodepencariankelas search.client.

  1. Langkah berikut menjalankan pencarian kosong (search=*), yang mengembalikan daftar tidak berperingkat (skor pencarian = 1.0) dari dokumen arbitrer. Karena tidak ada kriteria, semua dokumen disertakan dalam hasil. Kueri ini hanya mencetak dua bidang di setiap dokumen. Ini juga menambahkan include_total_count=True untuk mendapatkan hitungan semua dokumen (4) dalam hasil.

    results =  search_client.search(search_text="*", include_total_count=True)
    
    print ('Total Documents Matching Query:', results.get_count())
    for result in results:
        print("{}: {}".format(result["HotelId"], result["HotelName"]))
    
  2. Kueri berikutnya akan menambahkan seluruh istilah ke ekspresi pencarian ("wifi"). Kueri ini menentukan bahwa hasil hanya berisi bidang tersebut dalam pernyataan select. Membatasi bidang yang kembali akan meminimalkan jumlah data yang dikirim kembali melalui kabel dan mengurangi latensi pencarian.

    results =  search_client.search(search_text="wifi", include_total_count=True, select='HotelId,HotelName,Tags')
    
    print ('Total Documents Matching Query:', results.get_count())
    for result in results:
        print("{}: {}: {}".format(result["HotelId"], result["HotelName"], result["Tags"]))
    
  3. Selanjutnya, terapkan ekspresi filter, yang mengembalikan hanya hotel-hotel dengan peringkat lebih besar dari 4, diurutkan dalam urutan menurun.

    results =  search_client.search(search_text="hotels", select='HotelId,HotelName,Rating', filter='Rating gt 4', order_by='Rating desc')
    
    for result in results:
        print("{}: {} - {} rating".format(result["HotelId"], result["HotelName"], result["Rating"]))
    
  4. Tambahkan search_fields ke kueri cakupan yang cocok dengan satu bidang.

    results =  search_client.search(search_text="sublime", search_fields='HotelName', select='HotelId,HotelName')
    
    for result in results:
        print("{}: {}".format(result["HotelId"], result["HotelName"]))
    
  5. Aspek adalah label yang dapat digunakan untuk menyusun struktur navigasi faset. Kueri ini mengembalikan faset dan hitungan untuk Kategori.

    results =  search_client.search(search_text="*", facets=["Category"])
    
    facets = results.get_facets()
    
    for facet in facets["Category"]:
        print("    {}".format(facet))
    
  6. Dalam contoh ini, cari dokumen tertentu berdasarkan kuncinya. Anda biasanya ingin mengembalikan dokumen saat pengguna memilih dokumen dalam hasil pencarian.

    result = search_client.get_document(key="3")
    
    print("Details for hotel '3' are:")
    print("Name: {}".format(result["HotelName"]))
    print("Rating: {}".format(result["Rating"]))
    print("Category: {}".format(result["Category"]))
    
  7. Dalam contoh terakhir, kita akan menggunakan fungsi pelengkapan otomatis. Pelengkapan otomatis biasanya digunakan dalam kotak pencarian untuk menyediakan potensi kecocokan sebagai jenis pengguna ke dalam kotak pencarian.

    Saat indeks dibuat, pemberi saran bernama sg juga dibuat sebagai bagian dari permintaan. Definisi pemberi saran menentukan bidang mana yang dapat digunakan untuk menemukan potensi kecocokan dengan permintaan saran. Dalam contoh ini, bidang tersebut adalah 'Tag', 'Alamat/Kota', 'Alamat/Negara'. Untuk menyimulasikan pelengkapan otomatis, lewati huruf "sa" sebagai string parsial. Metode pelengkapan otomatis SearchClient mengirimkan kembali potensi kecocokan istilah.

    search_suggestion = 'sa'
    results = search_client.autocomplete(search_text=search_suggestion, suggester_name="sg", mode='twoTerms')
    
    print("Autocomplete for:", search_suggestion)
    for result in results:
        print (result['text'])
    

Bersihkan

Saat Anda bekerja di langganan Anda sendiri, sebaiknya Anda identifikasi apakah Anda masih membutuhkan sumber daya yang Anda buat di akhir proyek. Sumber daya yang dibiarkan beroperasi dapat dikenakan biaya. Anda dapat menghapus sumber daya satu per satu atau menghapus grup sumber daya untuk menghapus seluruh rangkaian sumber daya.

Anda dapat menemukan dan mengelola sumber daya di portal, menggunakan tautan Semua sumber daya atau Grup sumber daya di panel navigasi kiri.

Jika Anda menggunakan layanan gratis, ingatlah bahwa Anda terbatas pada tiga indeks, pengindeks, dan sumber data. Anda dapat menghapus item individu di portal agar tetap berada dalam batasan.

Langkah berikutnya

Dalam mulai cepat Python ini, Anda bekerja melalui alur kerja dasar menggunakan pustaka azure.search.documents dari Python SDK. Anda melakukan tugas yang membuat indeks, memuatnya dengan dokumen, dan menjalankan kueri. Untuk terus belajar, cobalah tutorial berikut.

Apa fungsi print () dalam python?

Fungsi print pada python adalah sebuah fungsi yang digunakan untuk memunculkan output yang ingin kita print pada console. Fungsi print terlihat sangat simple namun ternyata print merupakan fungsi yang paling banyak digunakan dalam sintaks python.

Apakah kegunaan tanda pagar (#) dalam python?

Untuk menggunakan komentar anda cukup menulis tanda pagar # , diikuti dengan komentar Anda.

Apa kegunaan parameter end pada perintah print ()?

Karakter Akhir Pada Fungsi Print Parameter end berfungsi untuk mengganti karakter terakhir bawaan yang dicetak di layar. Jadi secara bawaan, setiap kali kita memanggil fungsi print() untuk mencetak sesuatu, python akan mencetak karakter ganti baris ( ) di setiap output.

Bagaimana penerapan operator di python?

Operator pada Pemrograman Python dapat disimbolkan dengan tanda atau karakter seperti +, -, *, /, **, % dan sebagainya. Contoh sederhana seperti operasi penjumlahan dari 1+2=3. Dimana angka 1 dan 2 disebut sebagai operand yaitu nilai yang dioperasikan oleh operator, sedangkan karakter + disebut sebagai operator.