Azure AI Search'te dizin oluşturma

Azure AI Search'te sorgu istekleri, arama dizinindeki aranabilir metni hedefler.

Bu makalede, arama dizini tanımlama ve yayımlama adımlarını öğrenin. Dizin oluşturmak, arama hizmetinizdeki fiziksel veri yapılarını oluşturur. Dizin tanımı mevcut olduğunda, dizini yüklemek ayrı bir görev olarak devam eder.

Önkoşullar

  • Yazma izinleri. İzin, istek üzerine bir yönetici API anahtarı aracılığıyla verilebilir. Alternatif olarak, rol tabanlı erişim denetimi kullanıyorsanız, Arama Katkıda Bulunanı rolünün üyesi olarak bir istek gönderin.

  • Dizine eklemek istediğiniz verileri anlama. Dizin oluşturma bir şema tanımı alıştırması olduğundan, aranabilir, alınabilir, filtrelenebilir, modellenebilir ve sıralanabilir yapmak istediğiniz kaynak alanları net bir fikriniz olmalıdır (kılavuz için şema denetim listesine bakın).

    Ayrıca kaynak verilerde dizinde belge anahtarı (veya kimliği) olarak kullanılabilecek benzersiz bir alanınız olmalıdır.

  • Kararlı bir dizin konumu. Mevcut bir dizinin farklı bir arama hizmetine taşınması kullanıma açık olarak desteklenmez. Uygulama gereksinimlerini yeniden ziyaret edin ve mevcut arama hizmetinizin, kapasitesinin ve konumunun gereksinimleriniz için yeterli olduğundan emin olun.

  • Son olarak, tüm hizmet katmanlarında oluşturabileceğiniz nesne sayısı için dizin sınırları vardır. Örneğin, Ücretsiz katmanında denemeler yaparsanız, herhangi bir anda yalnızca üç dizininiz olabilir. Dizinin kendi içinde karmaşık alanların ve koleksiyonların sayısıyla ilgili sınırlar vardır.

Belge anahtarları

Arama dizininde bir gerekli alan vardır: belge anahtarı. Belge anahtarı, arama belgesinin benzersiz tanımlayıcısıdır. Azure AI Search'te bu bir dize olmalı ve dizine eklenecek içeriği sağlayan veri kaynağındaki benzersiz değerlerden kaynaklanmalıdır. Arama hizmeti anahtar değerleri oluşturmaz, ancak bazı senaryolarda (Azure tablo dizin oluşturucu gibi) var olan değerleri sentezler ve dizine alınan belgeler için benzersiz bir anahtar oluşturur.

Yeni ve güncelleştirilmiş içeriğin dizine alındığı artımlı dizin oluşturma sırasında, yeni anahtarlara sahip gelen belgeler eklenirken, dizin alanlarının null veya doldurulmuş olmasına bağlı olarak, var olan anahtarlara sahip gelen belgeler birleştirilir veya üzerine yazılır.

Şema denetim listesi

Arama dizininizin tasarım kararlarına yardımcı olması için bu denetim listesini kullanın.

  1. Dizin ve alan adlarının adlandırma kurallarına uyması için adlandırma kurallarını gözden geçirin.

  2. Desteklenen veri türlerini gözden geçirin. Veri türü, alanın nasıl kullanıldığını etkiler. Örneğin, sayısal içerik filtrelenebilir ancak tam metin aranamaz. En yaygın veri türü Edm.String , tam metin arama altyapısı kullanılarak belirteç haline getirilen ve sorgulanan aranabilir metindir.

  3. Belge anahtarını tanımlama. Belge anahtarı bir dizin gereksinimidir. Tek bir dize alanıdır ve benzersiz değerler içeren bir kaynak veri alanından doldurulur. Örneğin, Blob Depolama'den dizin oluştururken meta veri depolama yolu genellikle belge anahtarı olarak kullanılır çünkü kapsayıcıdaki her blobu benzersiz olarak tanımlar.

  4. Veri kaynağınızda dizinde aranabilir içeriğe katkıda bulunan alanları belirleyin. Aranabilir içerik, tam metin arama altyapısı kullanılarak sorgulanan kısa veya uzun dizeler içerir. İçerik ayrıntılıysa (küçük tümcecikler veya daha büyük öbekler), metnin nasıl belirteç haline getirildiğine bakmak için farklı çözümleyicilerle denemeler yapın.

    Alan özniteliği atamaları hem arama davranışlarını hem de arama hizmetindeki dizininizin fiziksel gösterimini belirler. Alanların nasıl belirtilmesi gerektiğini belirlemek, birçok müşteri için yinelemeli bir işlemdir. Yinelemeleri hızlandırmak için örnek verilerle başlayın, böylece kolayca bırakıp yeniden oluşturabilirsiniz.

  5. Filtre olarak hangi kaynak alanların kullanılabileceğini belirleyin. Sayısal içerik ve kısa metin alanları, özellikle yinelenen değerleri olanlar iyi seçeneklerdir. Filtrelerle çalışırken şunları unutmayın:

    • Filtrelenebilir alanlar isteğe bağlı olarak modelli gezintide kullanılabilir.

    • Filtrelenebilir alanlar rastgele sırayla döndürülür, bu nedenle bunları da sıralanabilir hale getirebilirsiniz.

  6. Varsayılan çözümleyicinin ("analyzer": null) mi yoksa farklı bir çözümleyicinin mi kullanılacağını belirleyin. Çözümleyiciler , dizin oluşturma ve sorgu yürütme sırasında metin alanlarını belirteç haline getirmek için kullanılır.

    Çok dilli dizeler için bir dil çözümleyicisi düşünün.

    Hecelenmiş dizeler veya özel karakterler için özel çözümleyicileri göz önünde bulundurun. Bir örnek, bir alanın tüm içeriğini tek bir belirteç olarak ele alan anahtar sözcüktür . Bu davranış posta kodları, kimlikler ve bazı ürün adları gibi veriler için yararlıdır. Daha fazla bilgi için bkz . Kısmi terim araması ve özel karakterler içeren desenler.

Not

Tam metin araması, dizin oluşturma sırasında belirteci oluşturulan terimler üzerinden gerçekleştirilir. Sorgularınız beklediğiniz sonuçları döndüremezse, dizenin gerçekten var olduğunu doğrulamak için belirteç oluşturma testi. Çeşitli çözümleyiciler için belirteçlerin nasıl üretildiğini görmek için dizelerde farklı çözümleyiciler deneyebilirsiniz.

Dizin oluşturma

Dizini oluşturmaya hazır olduğunuzda, isteği gönderebilen bir arama istemcisi kullanın. Erken geliştirme ve kavram kanıtı testi için Azure portalını veya REST API'lerini kullanabilirsiniz.

Geliştirme sırasında sık yapılan yeniden derlemeleri planlayın. Fiziksel yapılar hizmette oluşturulduğundan, birçok değişiklik için dizinlerin bırakılıp yeniden oluşturulması gerekir. Yeniden derlemelerin daha hızlı gerçekleşmesi için verilerinizin bir alt kümesiyle çalışmayı düşünebilirsiniz.

Portal aracılığıyla dizin tasarımı, sayısal alanlarda tam metin arama özelliklerine izin verme gibi belirli veri türleri için gereksinimleri ve şema kurallarını zorunlu kılar.

  1. Azure Portal’ında oturum açın.

  2. Arama hizmetine Genel Bakış sayfasında, arama dizini oluşturmak için iki seçenek arasından birini belirleyin:

    Sihirbaz, dizin oluşturucu, veri kaynağı ve tamamlanmış dizin oluşturan uçtan uca bir iş akışıdır. Ayrıca verileri yükler. Bu istediğinizden fazlaysa, bunun yerine Dizin ekle'yi kullanın.

Aşağıdaki ekran görüntüsünde, dizin ekle ve Verileri içeri aktar komut çubuğunda gösterildiği yerler vurgulanır. Dizin oluşturulduktan sonra dizinleri Dizinler sekmesinde yeniden bulabilirsiniz.

Dizin ekle komutu

İpucu

Portalda bir dizin oluşturduktan sonra JSON gösterimini kopyalayıp uygulama kodunuza ekleyebilirsiniz.

Çıkış noktaları arası sorgular için ayarlama corsOptions

Dizin şemaları ayarı corsOptionsiçin bir bölüm içerir. Varsayılan olarak, tarayıcılar tüm çıkış noktaları arası istekleri engellediğinden istemci tarafı JavaScript herhangi bir API çağıramaz. Dizininizde çıkış noktaları arası sorgulara izin vermek için corsOptions özniteliğini ayarlayarak CORS'yi (Çıkış Noktaları Arası Kaynak Paylaşımı) etkinleştirin. Güvenlik nedeniyle yalnızca sorgu API'leri CORS'yi destekler.

"corsOptions": {
  "allowedOrigins": [
    "*"
  ],
  "maxAgeInSeconds": 300

CORS için aşağıdaki özellikler ayarlanabilir:

  • allowedOrigins (gerekli): Bu, dizininize erişmesine izin verilen çıkış noktalarının listesidir. Bu kaynaklardan sunulan JavaScript kodunun dizininizi sorgulamasına izin verilir (çağıranın geçerli bir anahtar sağladığını veya izinlere sahip olduğunu varsayarsak). Her çıkış noktası genellikle formdadır protocol://<fully-qualified-domain-name>:<port> ancak <port> genellikle atlanır. Daha fazla bilgi için bkz . Çıkış noktaları arası kaynak paylaşımı (Wikipedia).

    Tüm çıkış noktalarına erişime izin vermek istiyorsanız, allowedOrigins dizisine tek bir öğe olarak ekleyin*. Bu, üretim arama hizmetleri için önerilen bir uygulama değildir, ancak genellikle geliştirme ve hata ayıklama için yararlıdır.

  • maxAgeInSeconds (isteğe bağlı): Tarayıcılar, CORS denetim öncesi yanıtlarını önbelleğe alma süresini (saniye cinsinden) belirlemek için bu değeri kullanır. Bu negatif olmayan bir tamsayı olmalıdır. Daha uzun bir önbellek süresi daha iyi performans sağlar, ancak CORS ilkesinin geçerlilik süresi uzatır. Bu değer ayarlı değilse, varsayılan olarak beş dakikalık bir süre kullanılır.

Mevcut dizinlerde izin verilen güncelleştirmeler

Dizin Oluştur, arama hizmetinizde fiziksel veri yapılarını (dosyalar ve ters dizinler) oluşturur. Dizin oluşturulduktan sonra, Güncelleştirme Dizini'ni kullanarak değişiklikleri etkileyebilme olanağınız, değişikliklerinizin bu fiziksel yapıları geçersiz kılıp geçersiz kılmadığına bağlı olarak değişir. Alan dizininizde oluşturulduktan sonra alan özniteliklerinin çoğu değiştirilemez.

Alternatif olarak, uygulama kodunuzda kararlı bir başvuru görevi görecek bir dizin diğer adı oluşturabilirsiniz. Kodunuzu güncelleştirmek yerine, bir dizin diğer adını daha yeni dizin sürümlerine işaret eden şekilde güncelleştirebilirsiniz.

Tasarım sürecindeki değişim oranını en aza indirmek için aşağıdaki tabloda şemada hangi öğelerin sabit ve esnek olduğu açıklanmaktadır. Sabit bir öğeyi değiştirmek için dizin yeniden derlemesi gerekirken, esnek öğeler herhangi bir zamanda fiziksel uygulamayı etkilemeden değiştirilebilir.

Öğe Güncelleştirilebilir mi?
Veri Akışı Adı Hayır
Anahtar Hayır
Alan adları ve türleri Hayır
Alan öznitelikleri (aranabilir, filtrelenebilir, modellenebilir, sıralanabilir) Hayır
Alan özniteliği (alınabilir) Yes
Analyzer Dizine özel çözümleyiciler ekleyebilir ve değiştirebilirsiniz. Dize alanlarındaki çözümleyici atamalarıyla ilgili olarak, yalnızca değiştirebilirsiniz searchAnalyzer. Diğer tüm atamalar ve değişiklikler için yeniden derleme gerekir.
Puanlama modelleri Yes
Öneri araçları Hayır
çıkış noktaları arası kaynak paylaşımı (CORS) Yes
Şifreleme Yes

Sonraki adımlar

Bir dizini verilerle yükleme veya eş anlamlılar eşlemesi ile dizini genişletme hakkında bilgi sahibi olmak için aşağıdaki bağlantıları kullanın.