Azure AI Search'te tam metin sorgusu oluşturma

Tam metin araması için bir sorgu oluşturuyorsanız, bu makalede isteği ayarlama adımları sağlanır. Ayrıca bir sorgu yapısı tanıtır ve alan özniteliklerinin ve dil çözümleyicilerinin sorgu sonuçlarını nasıl etkileyebileceğini açıklar.

Önkoşullar

Tam metin sorgu isteği örneği

Azure AI Search'te sorgu, hem sorgu yürütmeyi bilgilendiren hem de yanıtı geri döndüren parametreler içeren tek bir arama dizininin docs koleksiyonuna yönelik salt okunur bir istektir.

Tam metin sorgusu bir search parametrede belirtilir ve terimler, tırnak içine alınmış tümcecikler ve işleçlerden oluşur. Diğer parametreler isteğe daha fazla tanım ekler.

Aşağıdaki Search POST REST API çağrısı, yukarıda belirtilen parametreleri kullanan bir sorgu isteğini gösterir.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2023-11-01
{
    "search": "NY +view",
    "queryType": "simple",
    "searchMode": "all",
    "searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "top": "10",
    "count": "true"
}

Önemli noktalar:

  • search , işleçlerle veya işleçler olmadan genellikle tüm terimler veya tümcecikler olan eşleştirme ölçütlerini sağlar. Dizin şemasında "aranabilir" olarak nitelenen herhangi bir alan bu parametre için bir adaydır.

  • queryType ayrıştırıcıyı ayarlar: simple, full. Varsayılan basit sorgu ayrıştırıcısı , tam metin araması için idealdir. Tam Lucene sorgu ayrıştırıcısı normal ifadeler, yakınlık araması, belirsiz ve joker karakter araması gibi gelişmiş sorgu yapıları içindir. Bu parametre, sorgu yanıtlarında gelişmiş semantik modelleme için semantik derecelendirme için olarak da ayarlanabilir.semantic

  • searchMode eşleşmelerin ifadedeki "tüm" ölçütlere mi (duyarlığı tercih eder) yoksa "herhangi bir" ölçüte mi (geri çekmeyi tercih eder) dayandığını belirtir. Varsayılan değer "any" olur. Büyük metin blokları (içerik alanı veya uzun açıklamalar) içeren dizinlerde büyük olasılıkla boole işleçlerinin yoğun bir şekilde kullanılmasını bekliyorsanız, bu ayarın boole araması üzerindeki etkisini değerlendirmek için sorguları parametresiyle searchMode=Any|All test edin.

  • searchFields sorgu yürütmeyi belirli aranabilir alanlarla kısıtlar. Geliştirme sırasında, seçme ve arama için aynı alan listesini kullanmak yararlı olur. Aksi takdirde eşleşme, sonuçlarda göremeyeceğiniz alan değerlerini temel alarak belgenin neden döndürüldüğünün belirsiz olmasına neden olabilir.

Yanıtı şekillendirmek için kullanılan parametreler:

  • select yanıtta döndürülecek alanları belirtir. Select deyiminde yalnızca dizinde "alınabilir" olarak işaretlenmiş alanlar kullanılabilir.

  • top belirtilen sayıda en iyi eşleşen belgeyi döndürür. Bu örnekte yalnızca 10 isabet döndürülür. Sonuçları sayfaya eklemek için top ve skip (gösterilmiyor) kullanabilirsiniz.

  • count , tüm dizindeki kaç belgenin genel olarak eşleşebileceğini ve döndürülenden daha fazla olabileceğini bildirir.

  • orderby , sonuçları derecelendirme veya konum gibi bir değere göre sıralamak istiyorsanız kullanılır. Aksi takdirde, varsayılan değer, sonuçları sıralamak için ilgi puanını kullanmaktır. Bir alanın bu parametre için aday olması için "sıralanabilir" olarak ilişkilendirilmesi gerekir.

İstemci seçme

Erken geliştirme ve kavram kanıtı testi için Azure portalı veya REST istemcisi ile başlayın. Her iki yaklaşım da etkileşimlidir, hedefli test için kullanışlıdır ve kod yazmak zorunda kalmadan farklı özelliklerin etkilerini değerlendirmenize yardımcı olur.

Bir uygulamanın içinden arama yapmak için .NET, Java, JavaScript ve Python için Azure SDK'larındaki Azure.Document.Search istemci kitaplıklarını kullanın.

Portalda, bir dizini açtığınızda, alan özniteliklerine kolay erişim için yan yana sekmelerde dizin JSON tanımının yanı sıra Arama Gezgini ile çalışabilirsiniz. Sorguları test ederken hangilerinin aranabilir, sıralanabilir, filtrelenebilir ve modellenebilir olduğunu görmek için Alanlar tablosunu denetleyin.

  1. Azure portalında oturum açın ve arama hizmetinizi bulun.

  2. Dizinler'i açın ve bir dizin seçin.

  3. Arama gezgini sekmesinde bir dizin açılır, böylece hemen sorgulayabilirsiniz. Sorgu söz dizimlerini belirtmek için JSON görünümüne geçin.

    Aşağıda Hotels örnek dizini için çalışan bir tam metin arama sorgusu ifadesi verilmişti:

       {
           "search": "pool spa +airport",
           "queryType": "simple",
           "searchMode": "any",
           "searchFields": "Description, Tags",
           "select": "HotelName, Description, Tags",
           "top": 10,
           "count": true
       }
    

    Aşağıdaki ekran görüntüsünde sorgu ve yanıt gösterilmektedir:

    Screenshot of Search Explorer with a full text query.

Bir sorgu türü seçin: basit | Tam

Sorgunuz tam metin aramasıysa, arama terimleri ve tümcecikleri olarak geçirilen tüm metinleri işlemek için sorgu ayrıştırıcısı kullanılır. Azure AI Search iki sorgu ayrıştırıcısı sunar.

  • Basit ayrıştırıcı, basit sorgu söz dizimini anlar. Bu ayrıştırıcı, serbest biçimli metin sorgularındaki hızı ve etkinliği için varsayılan olarak seçildi. Söz dizimi, terim ve tümcecik aramaları için yaygın arama işleçlerini (AND, OR, NOT) ve Seattle ve Seaside için "sea*" içinde olduğu gibi ön ek (*) aramayı destekler. Genel bir öneri, önce basit ayrıştırıcıyı denemek ve ardından uygulama gereksinimleri daha güçlü sorgular için çağrıda bulunursa tam ayrıştırıcıya geçmektir.

  • İsteğe eklediğinizde queryType=full etkinleştirilen tam Lucene sorgu söz dizimi Apache Lucene Ayrıştırıcısı'nı temel alır.

Tam söz dizimi ve basit söz dizimi, hem aynı ön eki hem de boole işlemlerini destekleyen ölçüde çakışır, ancak tam söz dizimi daha fazla işleç sağlar. Tam olarak boole ifadeleri için daha fazla işleç ve benzer arama, joker karakter arama, yakınlık araması ve normal ifadeler gibi gelişmiş sorgular için daha fazla işleç vardır.

Sorgu yöntemlerini seçme

Arama temelde, terimlerin veya tümceciklerin bir arama kutusundan veya sayfadaki tıklama olaylarından toplandığı kullanıcı odaklı bir alıştırmadır. Aşağıdaki tabloda, beklenen arama deneyimiyle birlikte kullanıcı girişi toplayabileceğiniz mekanizmalar özetlenmektedir.

Giriş Deneyim
Arama yöntemi Kullanıcı, terimleri veya tümcecikleri işleçlerle veya işleçler olmadan bir arama kutusuna yazar ve isteği göndermek için Ara'ya tıklar. Arama aynı istek üzerindeki filtrelerle kullanılabilir, ancak otomatik tamamlama veya önerilerle kullanılamaz.
Otomatik tamamlama yöntemi Bir kullanıcı birkaç karakter yazar ve her yeni karakter yazıldıktan sonra sorgular başlatılır. Yanıt, dizinden tamamlanmış bir dizedir. Sağlanan dize geçerliyse, kullanıcı ara'ya tıklayarak bu sorguyu hizmete gönderir.
Öneriler yöntemi Otomatik tamamlamada olduğu gibi, bir kullanıcı birkaç karakter yazar ve artımlı sorgular oluşturulur. Yanıt, genellikle birkaç benzersiz veya açıklayıcı alanla temsil edilen eşleşen belgelerin açılan listesidir. Seçimlerden herhangi biri geçerliyse, kullanıcı bir seçime tıklar ve eşleşen belge döndürülür.
Çok yönlü gezinme Sayfada arama kapsamını daraltan tıklanabilir gezinti bağlantıları veya içerik haritaları gösterilir. Modelli gezinti yapısı, ilk sorguya göre dinamik olarak oluşturulur. Örneğin, search=* olası her kategoriden oluşan bir modelli gezinti ağacını doldurmak için. Bir sorgu yanıtından modelli gezinti yapısı oluşturulur, ancak aynı zamanda bir sonraki sorguyu ifade etmek için de bir mekanizmadır. n REST API başvurusu, facets Bir Arama Belgeleri işleminin sorgu parametresi olarak belgelenmiştir, ancak parametresi olmadan search kullanılabilir.
Filter yöntemi Filtreler, sonuçları daraltmak için modellerle birlikte kullanılır. Ayrıca, sayfanın arkasına, örneğin sayfayı dile özgü alanlarla başlatmak için bir filtre uygulayabilirsiniz. REST API başvurusunda, $filter Arama Belgeleri işleminin sorgu parametresi olarak belgelenir, ancak parametresi olmadan search kullanılabilir.

Alan özniteliklerinin sorgular üzerindeki etkisi

Sorgu türleri ve oluşturma hakkında bilginiz varsa, sorgu isteğindeki parametrelerin bir dizindeki alan özniteliklerine bağlı olduğunu hatırlayabilirsiniz. Örneğin, sorgularda ve arama sonuçlarında yalnızca ve retrievable olarak searchable işaretlenmiş alanlar kullanılabilir. İsteğinizde , filterve orderby parametrelerini ayarlarkensearch, beklenmeyen sonuçlardan kaçınmak için öznitelikleri denetlemeniz gerekir.

Otel örnek dizininin altındaki portal ekran görüntüsünde yalnızca son iki alan "LastRenovationDate" ve "Derecelendirme" yalnızca bir "$orderby" yan tümcesinde kullanım gereksinimidirsortable.

Index definition for the hotel sample

Alan özniteliği tanımları için bkz . Dizin Oluşturma (REST API).

Belirteçlerin sorgular üzerindeki etkisi

Dizin oluşturma sırasında, arama altyapısı sorgu zamanında eşleşme bulma olasılığını en üst düzeye çıkarmak için dizelerde bir metin çözümleyicisi kullanır. En azından dizeler küçük harfle yazılır, ancak çözümleyiciye bağlı olarak, lemmatizasyondan geçirilip sözcük kaldırmayı durdurabilir. Daha büyük dizeler veya bileşik sözcükler genellikle boşluk, kısa çizgi veya kısa çizgilerle ayrılır ve ayrı belirteçler olarak dizine eklenir.

Burada dikkat edilmesi gereken nokta, dizininizin içerdiğini düşündüğünüz ve aslında içindekilerin farklı olabileceğidir. Sorgular beklenen sonuçları döndürmezse, Çözümleyici tarafından oluşturulan belirteçleri Çözümleme Metni (REST API) aracılığıyla inceleyebilirsiniz. Belirteç oluşturma ve sorgular üzerindeki etkisi hakkında daha fazla bilgi için bkz . Kısmi terim araması ve özel karakterler içeren desenler.

Sonraki adımlar

Artık sorgu isteklerinin nasıl çalıştığını daha iyi anladığınıza göre, uygulamalı deneyim için aşağıdaki hızlı başlangıçları deneyin.