Birden çok arama belgesi oluşturmak için blobların ve dosyaların dizinini oluşturma
Şunlar için geçerlidir: Blob dizin oluşturucuları, Dosya dizin oluşturucuları
Varsayılan olarak, dizin oluşturucu bir blobun veya dosyanın içeriğini tek bir arama belgesi olarak ele alır. Arama dizininde daha ayrıntılı bir gösterim istiyorsanız, bir blob veya dosyadan birden çok arama belgesi oluşturmak için parsingMode değerlerini ayarlayabilirsiniz.
Birçok arama belgesine neden olan parsingMode değerleri şunlardır delimitedText
: (CSV için) veya jsonArray
jsonLines
(JSON için).
Bu ayrıştırma modlarından herhangi birini kullandığınızda, ortaya çıkan yeni arama belgelerinin benzersiz belge anahtarları olmalıdır ve bu değerin nereden geldiğini belirlemede bir sorun ortaya çıkar. Üst blobun biçiminde metadata_storage_path property
en az bir benzersiz değeri vardır, ancak bu değeri birden fazla arama belgesine katkıda bulunuyorsa anahtar artık dizinde benzersiz değildir.
Bu sorunu gidermek için blob dizin oluşturucu, tek blob üst öğesinden oluşturulan her alt arama belgesini benzersiz olarak tanımlayan bir AzureSearch_DocumentKey
oluşturur. Bu makalede bu özelliğin nasıl çalıştığı açıklanmaktadır.
Bire çok belge anahtarı
Dizindeki her belge bir belge anahtarıyla benzersiz olarak tanımlanır. Ayrıştırma modu belirtilmediğinde ve arama belgesi anahtarı için dizin oluşturucu tanımında açık alan eşlemesi yoksa, blob dizin oluşturucu otomatik olarak öğesini belge anahtarı olarak eşlermetadata_storage_path property
. Bu varsayılan eşleme, her blobun ayrı bir arama belgesi olarak görünmesini sağlar ve bu alan eşlemesini kendiniz oluşturma adımını kaydeder (normalde, yalnızca aynı adlara ve türlere sahip alanlar otomatik olarak eşlenir).
Bire çok arama belgesi senaryosunda, tabanlı metadata_storage_path property
örtük bir belge anahtarı mümkün değildir. Geçici bir çözüm olarak, Azure AI Search bir blobdan ayıklanan her bir varlık için bir belge anahtarı oluşturabilir. Oluşturulan anahtar adlandırılır AzureSearch_DocumentKey
ve her arama belgesine eklenir. Dizin oluşturucu, her blobdan oluşturulan "çok sayıda belgeyi" izler ve kaynak veriler zaman içinde değiştiğinde arama dizinine yönelik güncelleştirmeleri hedefleyebilir.
Varsayılan olarak, anahtar dizini alanı için açık alan eşlemeleri belirtilmediğinde, AzureSearch_DocumentKey
alan eşleme işlevi kullanılarak base64Encode
öğesine eşlenir.
Örnek
Aşağıdaki alanlara sahip bir dizin tanımı varsayın:
id
temperature
pressure
timestamp
Blob kapsayıcınızda aşağıdaki yapıya sahip bloblar vardır:
Blob1.json
{ "temperature": 100, "pressure": 100, "timestamp": "2024-02-13T00:00:00Z" }
{ "temperature" : 33, "pressure" : 30, "timestamp": "2024-02-14T00:00:00Z" }
Blob2.json
{ "temperature": 1, "pressure": 1, "timestamp": "2023-01-12T00:00:00Z" }
{ "temperature" : 120, "pressure" : 3, "timestamp": "2022-05-11T00:00:00Z" }
Bir dizin oluşturucu oluşturduğunuzda ve anahtar alanı için açık alan eşlemeleri belirtmeden parsingModejsonLines
değerini olarak ayarladığınızda, aşağıdaki eşleme örtük olarak uygulanır.
{
"sourceFieldName" : "AzureSearch_DocumentKey",
"targetFieldName": "id",
"mappingFunction": { "name" : "base64Encode" }
}
Bu kurulum, aşağıdaki çizime benzer şekilde belirsiz belge anahtarlarıyla sonuçlanır (base64 ile kodlanmış kimlik kısalmak üzere kısaltılmıştır).
Kimlik | sıcaklık | basınç | timestamp |
---|---|---|---|
aHR0 ... YjEuanNvbjsx | 100 | 100 | 2024-02-13T00:00:00Z |
aHR0 ... YjEuanNvbjsy | 33 | 30 | 2024-02-14T00:00:00Z |
aHR0 ... YjIuanNvbjsx | 1 | 1 | 2023-01-12T00:00:00Z |
aHR0 ... YjIuanNvbjsy | 120 | 3 | 2022-05-11T00:00:00Z |
Dizin anahtarı alanı için özel alan eşlemesi
Önceki örnekle aynı dizin tanımını varsayarsak blob kapsayıcınızda aşağıdaki yapıya sahip bloblar olduğunu varsayalım:
Blob1.json
recordid, temperature, pressure, timestamp
1, 100, 100,"2024-02-13T00:00:00Z"
2, 33, 30,"2024-02-14T00:00:00Z"
Blob2.json
recordid, temperature, pressure, timestamp
1, 1, 1,"20123-01-12T00:00:00Z"
2, 120, 3,"2022-05-11T00:00:00Z"
parsingMode ile delimitedText
bir dizin oluşturucu oluşturduğunuzda, anahtar alanına aşağıdaki gibi bir alan eşleme işlevi ayarlamak doğal görünebilir:
{
"sourceFieldName" : "recordid",
"targetFieldName": "id"
}
Ancak bu eşleme, alan bloblar arasında benzersiz olmadığından dizinde dört belgenin gösterilmesine recordid
neden olmaz. Bu nedenle, "bire çok" ayrıştırma modları için özelliğinden AzureSearch_DocumentKey
anahtar dizin alanına uygulanan örtük alan eşlemesini kullanmanızı öneririz.
Açık bir alan eşlemesi ayarlamak istiyorsanız sourceField değerinin tüm bloblardaki her bir varlık için ayrı olduğundan emin olun.
Not
Ayıklanan varlık başına benzersizlik sağlamak için AzureSearch_DocumentKey
kullanılan yaklaşım değiştirilebilir ve bu nedenle uygulamanızın ihtiyaçlarına göre değerine güvenmemelisiniz.
Verilerinizde dizin anahtarı alanını belirtin
Önceki örnek ve ayrıştırmaMode ile aynı dizin tanımının açık alan eşlemeleri belirtilmeden olarak ayarlandığını jsonLines
ve dolayısıyla eşlemelerin ilk örnekteki gibi göründüğünü varsayarsak, blob kapsayıcınızda aşağıdaki yapıya sahip bloblar olduğunu varsayalım:
Blob1.json
id, temperature, pressure, timestamp
1, 100, 100,"2024-02-13T00:00:00Z"
2, 33, 30,"2024-02-14T00:00:00Z"
Blob2.json
id, temperature, pressure, timestamp
1, 1, 1,"2023-01-12T00:00:00Z"
2, 120, 3,"2022-05-11T00:00:00Z"
Her belgenin, dizindeki id
alan olarak tanımlanan alanını içerdiğine key
dikkat edin. Böyle bir durumda, benzersiz bir belge AzureSearch_DocumentKey
oluşturulsa bile, belge için "anahtar" olarak kullanılmaz. Bunun yerine, alanın değeri id
alana eşlenir key
Önceki örneğe benzer şekilde, alan bloblar arasında benzersiz olmadığından bu eşleme dizinde dört belgenin gösterilmesine id
neden olmaz. Bu durumda, yeni bir id
belgenin karşıya yüklenmesi yerine var olan belgede birleştirmenin sonucunu belirten herhangi bir json girdisi ve dizinin durumu belirtilen id
ile en son okuma girdisini yansıtır.
Sonraki adımlar
Blob dizin oluşturmanın temel yapısı ve iş akışı hakkında bilgi sahibi değilseniz önce Azure AI Search ile dizin oluşturma Azure Blob Depolama gözden geçirmeniz gerekir. Farklı blob içerik türleri için ayrıştırma modları hakkında daha fazla bilgi için aşağıdaki makaleleri gözden geçirin.