Dizinler Azure Bilişsel Arama

Bu Azure Bilişsel Arama arama dizini, arama motoru tarafından dizin oluşturma, tam metin araması ve filtrelenmiş sorgular için kullanılabilen aranabilir içeriğinizdir. Dizin bir şema tarafından tanımlanır ve ikinci adım olarak aşağıdaki veri içeri aktarma işlemiyle arama hizmetine kaydedilir. Bu içerik, modern uygulamalarda beklenen milisaniye yanıt süreleri için gerekli olan birincil veri depolarından ayrı olarak arama hizmetinizin içinde yer alan bir içeriktir. Belirli dizin oluşturma senaryoları dışında, arama hizmeti hiçbir zaman yerel verilerinize bağlanmaz veya verilerinizi sorgulamaz.

Arama dizini oluşturuyor ve yönetiyorsanız, bu makale şunları anlamanıza yardımcı olacaktır:

  • İçerik (belgeler ve şema)
  • Fiziksel gösterim
  • Temel işlemler

Hemen nasıl bir şekilde ilerlersiniz? Bunun yerine bkz. Arama dizini oluşturma.

Arama dizininin içeriği

Bilişsel Arama'da dizinler arama belgeleri içerir. Kavramsal olarak, belge dizininiz içinde aranabilir verilerin tek bir birimidir. Örneğin bir perakendecinin her ürün için bir belgesi, haber kuruluşlarının her makale için bir belgesi, bir seyahat sitesinde her otel ve hedef için bir belge ve benzeri bir belge olabilir. Bu kavramları daha tanıdık veritabanı eşdeğerleri ile eşleme: arama dizini bir tabloya karşılık gelir ve belgeler kabaca tablodaki satırlarla eşdeğerdir.

Bir belgenin yapısı aşağıda gösterildiği gibi dizin şeması tarafından belirlenir. "Alanlar" koleksiyonu genellikle bir dizinin en büyük bölümü olup her bir alan olarak adlandırılmış, bir veri türü atanmış ve nasıl kullanılı olduğunu belirleyen izin verilebilir davranışlarla öznitelik haline geldi.

{
  "name": "name_of_index, unique across the service",
  "fields": [
    {
      "name": "name_of_field",
      "type": "Edm.String | Collection(Edm.String) | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint",
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),
      "filterable": true (default) | false,
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),
      "key": true | false (default, only Edm.String fields can be keys),
      "retrievable": true (default) | false,
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "synonymMaps": [ "name_of_synonym_map" ] (optional, only one synonym map per field is currently supported)
    }
  ],
  "suggesters": [ ],
  "scoringProfiles": [ ],
  "analyzers":(optional)[ ... ],
  "charFilters":(optional)[ ... ],
  "tokenizers":(optional)[ ... ],
  "tokenFilters":(optional)[ ... ],
  "defaultScoringProfile": (optional) "...",
  "corsOptions": (optional) { },
  "encryptionKey":(optional){ }
  }
}

Diğer öğeler daha fazla ayrıntı için daraltılmış ancak aşağıdaki bağlantılarda ayrıntı sağlanmıştır:

Alan tanımları

Dizin Oluşturma isteğinin gövdesinde "alanlar" koleksiyonu tarafından bir arama belgesi tanımlanır. Belge tanımlama (anahtarlar), aranabilir metin depolamak ve filtreleri, facet'leri ve sıralamaları desteklemek için alanlar gerekir. Ayrıca kullanıcının hiçbir zaman gördüğü veriler için alanlara da ihtiyacınız olabilir. Örneğin, kar marjları veya pazarlama promosyonları için arama sıralamalarını değiştirmek için kullanabileceğiniz alanlar istiyor olabilir.

Gelen veriler doğası gereği hiyerarşikse, bunu bir dizin içinde, iç içe yapıları temsil etmek için kullanılan karmaşık bir tür olarak temsilebilirsiniz. Yerleşik örnek veri kümesi olan Hotels, her otelle bire bir ilişkisi olan bir Adres (birden çok alt alan içerir) kullanan karmaşık türleri ve her otelle birden çok oda ilişkilendirilen Rooms karmaşık koleksiyonunu gösterir.

Alan öznitelikleri

Alan öznitelikleri, bir alanın nasıl kullanıldığını; örneğin, tam metin alanında mı, çok yönlü gezinmede mi, sıralama işlemlerinde vb.’de mi kullanılıp kullanılmayacağı belirler.

Dize alanları genellikle "aranabilir" ve "alınabilir" olarak işaretlenir. Arama sonuçlarını daraltmak için kullanılan alanlar arasında "sıralanabilir", "filtrelenebilir" ve "facetable" vardır.

Öznitelik Açıklama
"aranabilir" Tam metin aranabilir, dizin oluşturma sırasında sözcüklere bölme gibi sözcük temelli analize tabidir. Aranabilir bir alanı, "güneşli gün" gibi bir değere ayarlarsanız, dahili olarak bu "güneşli" ve "gün" belirteçlerine bölünür. Ayrıntılar için bkz. Tam metin araması nasıl çalışır?
"filtrelenebilir" $filter sorgularında başvurulur. Edm.String veya Collection(Edm.String) türünde filtrelenebilir alanlara sözcüklere bölme işlemi uygulanmaz, bu nedenle karşılaştırmalar yalnızca tam eşleşmeler içindir. Örneğin, böyle bir alanı "güneşli gün" olarak ayarlarsanız $filter=f eq 'sunny' herhangi bir eşleşme bulmaz, ancak $filter=f eq 'sunny day' bulur.
"sıralanabilir" Varsayılan olarak sistem sonuçları puana göre sıralar, ancak belgelerdeki alanlara göre sıralamayı yapılandırabilirsiniz. Türünde alanlar Collection(Edm.String) "sıralanabilir" olamaz.
"facetable" Genellikle kategoriye göre (örneğin, belirli bir şehirdeki oteller) isabet sayısını içeren bir arama sonuçları sunumunda kullanılır. Bu seçenek, Edm.GeographyPoint türünde alanlarla kullanılamaz. Filtrelenebilir, "sıralanabilir" veya "facetable" türünde alanlar en fazla Edm.String 32 kilobayt uzunluğunda olabilir. Ayrıntılar için bkz. Dizin Oluşturma (REST API’si).
"anahtar" Dizin içindeki belgeler için benzersiz tanımlayıcı. Anahtar alan olarak tam olarak bir alan seçilmeli ve Edm.String türünde olmalıdır.
"alınabilir" Alanın bir arama sonucunda döndürülüp döndürülemeyeceğini belirler. Filtre, sıralama veya puanlama mekanizması olarak bir alanı (örn. kâr marjı) kullanmak istediğinizde, ancak alanın son kullanıcıya görünür olmasını istemediğinizde bu faydalıdır. Bu öznitelik, key alanları için true olmalıdır.

İstediğiniz zaman yeni alanlar ekleyebilseniz de, dizinin ömrü boyunca mevcut alan tanımları kilitlenir. Bu nedenle geliştiriciler genellikle basit dizinler oluşturmak, fikirleri test etmek veya portal sayfalarını kullanarak bir ayarı bulmak için portalı kullanır. Dizini kolayca yeniden derleyebilmeniz için kod tabanlı bir yaklaşım izlerseniz, bir dizin tasarımı çerçevesinde sık sık yapılan yineleme daha verimli olur.

Not

Dizin oluşturmak için kullandığınız API'lerde farklı varsayılan davranışlar vardır. REST API'leriçin çoğu öznitelik varsayılan olarak etkindir (örneğin, "aranabilir" ve "alınabilir" dize alanları için doğrudur) ve genellikle bunları yalnızca kapatmak istediğiniz zaman ayarlamanız gerekir. .NET SDK için bunun tersi doğrudur. Açıkça ayarlamazsanız, özel olarak etkinleştirmedikçe ilgili arama davranışını devre dışı bırakmak varsayılandır.

Fiziksel yapı ve boyut

Bu Azure Bilişsel Arama, bir dizinin fiziksel yapısı büyük ölçüde bir iç uygulamadır. Şemasına erişebilirsiniz, içeriğini sorgular, boyutunu izleyebilir ve kapasiteyi yönetebilir, ancak kümelerin kendileri (dizinler, parçalar ve diğer dosya ve klasörler) Microsoft tarafından dahili olarak yönetilir.

Dizinin boyutu şu şekilde belirlenir:

  • Belgelerinizin miktarı ve bileşimi
  • Dizin yapılandırması (özellikle öneri önerilerini ekp içermediğiniz)
  • Tek tek alanlardaki öznitelikler

Dizin boyutunu, dizinler sekmesindeki dizinler Azure portal veya arama hizmetinize bir GET INDEX isteği yayınarak izleyebilirsiniz.

Dizin boyutunu etkileyen faktörler

Belge bileşimi ve miktarı, içeri aktarmayı seçtiğiniz değere göre belirlenir. Arama dizininin yalnızca aranabilir içerik içermesi gerektiğini unutmayın. Kaynak belgeler ikili alanlar içerirse, genellikle bu alanları dizin şemasından atlarsınız (metin aranabilir bilgiler oluşturmak için içeriği analiz etmek ve çözümlemek için AI zenginleştirmesi kullanmadıkça).

Dizin yapılandırması, belgelere ek olarak öneride bulunanlar, müşteri çözümleyicileri, puanlama profilleri, CORS ayarları ve şifreleme anahtarı bilgileri gibi diğer bileşenleri de içerebilir. Yukarıdaki listede, dizin boyutunu etkileme potansiyeline sahip tek bileşen önericilerdir. Önericiler, tür ileri veya otomatik tamamlama sorgularını destekleyen yapılardır. Bu nedenle, bir öneriyi dahil etmek için dizin oluşturma işlemi, tam karakter eşleşmeleri için gereken veri yapılarını oluşturur. Öneride bulunanlar alan düzeyinde uygulanır, bu nedenle yalnızca tür ilerisi için makul olan alanları seçin.

Alan öznitelikleri, dizin boyutunun dikkate alınması gereken üçüncü konudur. Öznitelikler davranışları belirler. Bu davranışları desteklemek için dizin oluşturma işlemi, destekleyen veri yapılarını oluşturacak. Örneğin, "aranabilir", belirteçleştirilmişterim için ters dizinleri tarar tam metin araması çağırır. Buna karşılık, "filtrelenebilir" veya "sıralanabilir" özniteliği, değiştirilmemiş dizeler üzerinde yinelemeyi destekler.

Özniteliklerin ve önericilerin depolama üzerindeki etkilerini gösteren örnek

Aşağıdaki ekran görüntüsü, çeşitli öznitelik birleşimlerinden elde edilen dizin depolama desenlerini göstermektedir. Dizin, Verileri içeri aktarma sihirbazını ve yerleşik örnek verileri kullanarak kolayca oluşturabilirsiniz emlak örnek dizinine dayalıdır. Dizin şemaları gösterilmese de, dizin adına bağlı olarak öznitelikleri çıkartırsınız. Örneğin, realestate-searchable dizininde "aranabilir" özniteliği seçilidir ve başka hiçbir şey seçilmez, realestate-alınabilir dizinde "alınabilir" özniteliği seçilidir ve başka hiçbir şey yoktur.

Öznitelik seçimine göre dizin boyutu

Bu dizin çeşitlemeleri biraz yapay olsa da, özniteliklerin depolamayı nasıl etkilediğine genel karşılaştırmalar için bunlara bakacağız:

  • "Alınabilir" ifadesinin dizin boyutu üzerinde hiçbir etkisi yoktur.
  • "filtrelenebilir", "sıralanabilir", "facetable" daha fazla depolama alanı tüketir.
  • önericinin dizin boyutunu artırmak için büyük bir potansiyeli vardır, ancak ekran görüntüsünde belirtilen kadar değildir (önericinin farkında olması mümkün olan tüm alanlar seçilmiştir ve bu çoğu dizinde olası bir senaryo değildir).

Ayrıca, çözümleyicilerin etkisi yukarıdaki tabloda yansıtıcı değildir. Karakterlerin tam dizilerini (a, ab, abc, abcd) depolamak için edgeNgram tokenizer kullanıyorsanız, dizinin boyutu standart çözümleyiciyi kullanmaya göre daha büyük olur.

Temel işlemler ve etkileşim

Artık bir dizinin ne olduğu konusunda daha iyi bir fikir edinebilirsiniz. Bu bölümde, tek bir dizine bağlanma ve dizin güvenliğini sağlama da dahil olmak üzere dizin çalışma zamanı işlemleri tanıtıyor.

Not

Bir dizini yönetmek için, bir dizini taşıma veya kopyalama için portal veya API desteği olmadığının farkında olun. Bunun yerine, müşteriler uygulama dağıtım çözümlerini genellikle farklı bir arama hizmetine (aynı dizin adını kullanıyorsanız) işaret eder veya geçerli arama hizmetine bir kopya oluşturmak için adı düzeltebilir ve sonra bunu oluşturabilir.

Dizin yalıtımı

Bilişsel Arama'da, dizinle ilgili tüm işlemlerin tek bir dizini hedeflemektedir. İlgili dizinler kavramı veya dizin oluşturma veya sorgulama için bağımsız dizinlerin birleştirmesi kavramı yoktur.

Sürekli kullanılabilir

Bir dizin duraklatma veya çevrimdışı duruma getirme özelliğine sahip değildir. Sürekli işlem için tasarlanma nedeniyle, içeriğinde yapılan tüm güncelleştirmeler veya dizinin kendisine yapılan eklemeler gerçek zamanlı olarak uzer. Sonuç olarak, bir istek bir belge güncelleştirmesi ile çakışıyorsa sorgular geçici olarak tamamlanmamış sonuçlar geri dönebilirsiniz.

Belge işlemleri (yenileme veya silme) ve geçerli dizinin mevcut yapısını ve bütünlüğünü (yeni alanlar ekleme gibi) etkilemeden değişiklikler için sorgu sürekliliği mevcut olduğunu fark edersiniz. Yapısal güncelleştirmeler (mevcut alanları değiştirme) yapmak zorundasanız, bunlar genellikle geliştirme ortamındaki bir bırakma ve yeniden oluşturma iş akışı kullanılarak veya üretim hizmette dizinin yeni bir sürümü oluşturarak yönetilir.

Dizinin yeniden oluşturulmasınıönlemek için, küçük değişiklikler yapan bazı müşteriler, önceki sürümle birlikte var olan yeni bir alan oluşturarak bir alanı "sürümü" seçer. Bu, zaman içinde, kullanılmayan alanlar veya eski özel çözümleyici tanımları (özellikle çoğaltması pahalı olan bir üretim dizininde) yalnız kalan içeriğe yol açmaktadır. Dizin yaşam döngüsü yönetiminin bir parçası olarak dizine yapılan planlı güncelleştirmelerde bu sorunları ele alın.

Uç nokta bağlantısı ve güvenliği

Tüm dizin oluşturma ve sorgu istekleri bir dizini hedefler. Uç noktalar genellikle aşağıdakilerden biri olur:

Uç Nokta Bağlantı ve erişim denetimi
<your-service>.search.windows.net/indexes Dizin koleksiyonunu hedefler. Dizin oluştururken, listelerken veya silinirken kullanılır. Bu işlemler için yönetici hakları gereklidir, yönetici API anahtarları veya Arama Katkıda Bulunanı rolü aracılığıyla kullanılabilir.
<your-service>.search.windows.net/indexes/<your-index>/docs Tek bir dizinin belge koleksiyonunu hedefler. Dizin veya veri yenileme sorgularında kullanılır. Sorgular için okuma hakları yeterlidir ve sorgu API'si anahtarları veya veri okuyucusu rolü aracılığıyla kullanılabilir. Veri yenileme için yönetici hakları gereklidir.

Sonraki adımlar

Bilişsel Arama için neredeyse tüm örnekleri veya izlenecek yolu kullanarak dizin oluşturma konusunda uygulamalı deneyim elde edersiniz. Başlangıç olarak, içindekiler tablosundan herhangi bir hızlı başlangıç seçebilirsiniz.

Ancak verilerle dizin yükleme yöntemlerini de bilmek de gerekir. Dizin tanımı ve veri içeri aktarma stratejileri birlikte tanımlanır. Aşağıdaki makaleler, dizin oluşturma ve yükleme hakkında daha fazla bilgi sağlar.