Azure Bilişsel Arama Azure Blob depolamada belge dizin oluşturmaHow to index documents in Azure Blob Storage with Azure Cognitive Search

Bu makalede, Azure Blob depolamada depolanan belgelerin (PDF 'Ler, Microsoft Office belgeler ve diğer birçok yaygın biçim gibi) dizin oluşturma için Azure Bilişsel Arama nasıl kullanılacağı gösterilmektedir.This article shows how to use Azure Cognitive Search to index documents (such as PDFs, Microsoft Office documents, and several other common formats) stored in Azure Blob storage. İlk olarak, blob Dizin oluşturucuyu ayarlama ve yapılandırma hakkında temel bilgileri açıklar.First, it explains the basics of setting up and configuring a blob indexer. Daha sonra, büyük olasılıkla karşılaştığınız davranış ve senaryolar hakkında daha ayrıntılı bir araştırma sunar.Then, it offers a deeper exploration of behaviors and scenarios you are likely to encounter.

Desteklenen belge biçimleriSupported document formats

Blob Indexer aşağıdaki belge biçimlerinden metin ayıklayabilir:The blob indexer can extract text from the following document formats:

Blob dizinlemeyi ayarlamaSetting up blob indexing

Kullanarak bir Azure Blob depolama Dizin Oluşturucu ayarlayabilirsiniz:You can set up an Azure Blob Storage indexer using:

Not

Bazı Özellikler (örneğin, alan eşlemeleri) portalda henüz kullanılamaz ve programlı olarak kullanılması gerekir.Some features (for example, field mappings) are not yet available in the portal, and have to be used programmatically.

Burada, akışı REST API kullanarak gösteririz.Here, we demonstrate the flow using the REST API.

1. Adım: Veri kaynağı oluşturmaStep 1: Create a data source

Veri kaynağı, hangi verilerin dizine erişmesi gerektiğini, verilere erişmek için gereken kimlik bilgilerini ve verilerdeki değişiklikleri verimli bir şekilde belirlemek için ilkeleri (yeni, değiştirilmiş veya silinen satırlar) belirler.A data source specifies which data to index, credentials needed to access the data, and policies to efficiently identify changes in the data (new, modified, or deleted rows). Aynı arama hizmetinde birden çok Dizin Oluşturucu tarafından bir veri kaynağı kullanılabilir.A data source can be used by multiple indexers in the same search service.

Blob dizin oluşturma için veri kaynağı aşağıdaki gerekli özelliklere sahip olmalıdır:For blob indexing, the data source must have the following required properties:

  • ad , arama hizmetinizin içindeki veri kaynağının benzersiz adıdır.name is the unique name of the data source within your search service.
  • tür azureblobolmalıdır.type must be azureblob.
  • kimlik bilgileri , credentials.connectionString parametresi olarak depolama hesabı bağlantı dizesini sağlar.credentials provides the storage account connection string as the credentials.connectionString parameter. Ayrıntılar için aşağıdaki kimlik bilgilerini belirtme konusuna bakın.See How to specify credentials below for details.
  • kapsayıcı , depolama hesabınızda bir kapsayıcı belirtir.container specifies a container in your storage account. Varsayılan olarak, kapsayıcıdaki tüm Bloblar alınabilir.By default, all blobs within the container are retrievable. Yalnızca belirli bir sanal dizinde Blobları indekslemek istiyorsanız, bu dizini isteğe bağlı sorgu parametresini kullanarak belirtebilirsiniz.If you only want to index blobs in a particular virtual directory, you can specify that directory using the optional query parameter.

Bir veri kaynağı oluşturmak için:To create a data source:

POST https://[service name].search.windows.net/datasources?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>;" },
    "container" : { "name" : "my-container", "query" : "<optional-virtual-directory-name>" }
}   

Veri kaynağı API 'SI oluşturma hakkında daha fazla bilgi için bkz. veri kaynağı oluşturma.For more on the Create Datasource API, see Create Datasource.

Kimlik bilgilerini belirtmeHow to specify credentials

Blob kapsayıcısının kimlik bilgilerini şu yollarla sağlayabilirsiniz:You can provide the credentials for the blob container in one of these ways:

  • Tam erişimli depolama hesabı bağlantı dizesi: DefaultEndpointsProtocol=https;AccountName=<your storage account>;AccountKey=<your account key> Azure Portal depolama hesabı dikey penceresine giderek > Ayarlar > anahtarlar (klasik depolama hesapları için) veya ayarlar > erişim anahtarları (Azure Resource Manager depolama hesapları için) üzerinden bağlantı dizesini alabilir.Full access storage account connection string: DefaultEndpointsProtocol=https;AccountName=<your storage account>;AccountKey=<your account key> You can get the connection string from the Azure portal by navigating to the storage account blade > Settings > Keys (for Classic storage accounts) or Settings > Access keys (for Azure Resource Manager storage accounts).
  • Depolama hesabı paylaşılan erişim imzası (SAS) bağlantı dizesi: sas 'lar BlobEndpoint=https://<your account>.blob.core.windows.net/;SharedAccessSignature=?sv=2016-05-31&sig=<the signature>&spr=https&se=<the validity end time>&srt=co&ss=b&sp=rl kapsayıcılar ve nesneler üzerinde (Bu durumda Bloblar) liste ve okuma izinlerine sahip olmalıdır.Storage account shared access signature (SAS) connection string: BlobEndpoint=https://<your account>.blob.core.windows.net/;SharedAccessSignature=?sv=2016-05-31&sig=<the signature>&spr=https&se=<the validity end time>&srt=co&ss=b&sp=rl The SAS should have the list and read permissions on containers and objects (blobs in this case).
  • Kapsayıcı paylaşılan erişim imzası: ContainerSharedAccessUri=https://<your storage account>.blob.core.windows.net/<container name>?sv=2016-05-31&sr=c&sig=<the signature>&se=<the validity end time>&sp=rl sa 'lar, kapsayıcıda liste ve okuma izinlerine sahip olmalıdır.Container shared access signature: ContainerSharedAccessUri=https://<your storage account>.blob.core.windows.net/<container name>?sv=2016-05-31&sr=c&sig=<the signature>&se=<the validity end time>&sp=rl The SAS should have the list and read permissions on the container.

Depolama paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz. paylaşılan erişim Imzalarını kullanma.For more info on storage shared access signatures, see Using Shared Access Signatures.

Not

SAS kimlik bilgilerini kullanıyorsanız, zaman aşımı süresini engellemek için veri kaynağı kimlik bilgilerini yenilenen imzalara göre düzenli aralıklarla güncelleştirmeniz gerekecektir.If you use SAS credentials, you will need to update the data source credentials periodically with renewed signatures to prevent their expiration. SAS kimlik bilgilerinin kullanım süreleri dolarsa, Dizin Oluşturucu Credentials provided in the connection string are invalid or have expired.benzer bir hata iletisiyle başarısız olur.If SAS credentials expire, the indexer will fail with an error message similar to Credentials provided in the connection string are invalid or have expired..

2. Adım: Dizin oluşturmaStep 2: Create an index

Dizin, bir belge, öznitelik ve arama deneyimini şekillendirip diğer yapıların alanlarını belirtir.The index specifies the fields in a document, attributes, and other constructs that shape the search experience.

Bloblardan ayıklanan metni depolamak için aranabilir content alanla bir dizin oluşturma:Here's how to create an index with a searchable content field to store the text extracted from blobs:

POST https://[service name].search.windows.net/indexes?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
      "name" : "my-target-index",
      "fields": [
        { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
      ]
}

Dizinler oluşturma hakkında daha fazla bilgi için bkz. Dizin oluşturmaFor more on creating indexes, see Create Index

3. Adım: Dizin Oluşturucu oluşturmaStep 3: Create an indexer

Bir Dizin Oluşturucu bir veri kaynağını hedef arama diziniyle bağlar ve veri yenilemeyi otomatikleştirmek için bir zamanlama sağlar.An indexer connects a data source with a target search index, and provides a schedule to automate the data refresh.

Dizin ve veri kaynağı oluşturulduktan sonra, Dizin oluşturucuyu oluşturmaya hazırsınız:Once the index and data source have been created, you're ready to create the indexer:

POST https://[service name].search.windows.net/indexers?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
  "name" : "blob-indexer",
  "dataSourceName" : "blob-datasource",
  "targetIndexName" : "my-target-index",
  "schedule" : { "interval" : "PT2H" }
}

Bu Dizin Oluşturucu her iki saatte bir çalışır (zamanlama aralığı "PT2H" olarak ayarlanır).This indexer will run every two hours (schedule interval is set to "PT2H"). Her 30 dakikada bir dizin oluşturucu çalıştırmak için, aralığı "PT30M" olarak ayarlayın.To run an indexer every 30 minutes, set the interval to "PT30M". Desteklenen en kısa Aralık 5 dakikadır.The shortest supported interval is 5 minutes. Zamanlama isteğe bağlıdır-atlanırsa, Dizin Oluşturucu yalnızca bir kez oluşturulduğunda çalışır.The schedule is optional - if omitted, an indexer runs only once when it's created. Ancak, bir dizin oluşturucuyu dilediğiniz zaman isteğe bağlı olarak çalıştırabilirsiniz.However, you can run an indexer on-demand at any time.

Dizin Oluşturucu oluşturma API 'SI hakkında daha fazla bilgi için bkz. Dizin Oluşturucu oluştur.For more details on the Create Indexer API, check out Create Indexer.

Dizin Oluşturucu zamanlamalarını tanımlama hakkında daha fazla bilgi için bkz. Azure bilişsel arama için Dizin Oluşturucu zamanlama.For more information about defining indexer schedules see How to schedule indexers for Azure Cognitive Search.

Azure Bilişsel Arama blob 'ları dizin oluşturmaHow Azure Cognitive Search indexes blobs

Dizin Oluşturucu yapılandırmasınabağlı olarak, blob Indexer yalnızca depolama meta verilerini dizine alabilir (yalnızca meta verileri ilgilenmeniz ve Blobların içeriğini dizinlemek gerekmez), depolama ve içerik meta verileri ya da hem meta veri hem de metin içeriği.Depending on the indexer configuration, the blob indexer can index storage metadata only (useful when you only care about the metadata and don't need to index the content of blobs), storage and content metadata, or both metadata and textual content. Varsayılan olarak, Dizin Oluşturucu hem meta verileri hem de içeriği ayıklar.By default, the indexer extracts both metadata and content.

Not

Varsayılan olarak, JSON veya CSV gibi yapılandırılmış içeriğe sahip Bloblar tek bir metin öbeği olarak dizinlenir.By default, blobs with structured content such as JSON or CSV are indexed as a single chunk of text. JSON ve CSV bloblarını yapılandırılmış bir şekilde indekslemek istiyorsanız, daha fazla bilgi için bkz. JSON bloblarını dizine ekleme ve CSV bloblarını dizin oluşturma .If you want to index JSON and CSV blobs in a structured way, see Indexing JSON blobs and Indexing CSV blobs for more information.

Birleşik veya katıştırılmış bir belge (örneğin, bir posta arşivi veya ek içeren katıştırılmış Outlook e-postasına sahip bir Word belgesi) tek bir belge olarak dizinlenir.A compound or embedded document (such as a ZIP archive or a Word document with embedded Outlook email containing attachments) is also indexed as a single document.

  • Belgenin metinsel içeriği, contentadlı bir dize alanına ayıklanır.The textual content of the document is extracted into a string field named content.

Not

Azure Bilişsel Arama, fiyatlandırma katmanına bağlı olarak ne kadar metin ayıklar: ücretsiz katman için 32.000 karakter, temel için 64.000 ve standart, Standart S2 ve Standart S3 katmanları için 4.000.000.Azure Cognitive Search limits how much text it extracts depending on the pricing tier: 32,000 characters for Free tier, 64,000 for Basic, and 4 million for Standard, Standard S2 and Standard S3 tiers. Kesilen belgeler için Dizin Oluşturucu durum yanıtında bir uyarı bulunur.A warning is included in the indexer status response for truncated documents.

  • Blob üzerinde bulunan Kullanıcı tarafından belirtilen meta veri özellikleri, varsa, tam olarak ayıklanır.User-specified metadata properties present on the blob, if any, are extracted verbatim.

  • Standart blob meta veri özellikleri aşağıdaki alanlara ayıklanır:Standard blob metadata properties are extracted into the following fields:

    • meta veri_depolama_adı (EDM. String)-Blobun dosya adı.metadata_storage_name (Edm.String) - the file name of the blob. Örneğin, bir blob/My-Container/My-Folder/subfolder/Resume.exe PDF varsa, bu alanın değeri resume.pdf.For example, if you have a blob /my-container/my-folder/subfolder/resume.pdf, the value of this field is resume.pdf.
    • meta veri_depolama_yolu (EDM. String)-depolama hesabı da dahil olmak üzere Blobun tam URI 'si.metadata_storage_path (Edm.String) - the full URI of the blob, including the storage account. Örneğin, https://myaccount.blob.core.windows.net/my-container/my-folder/subfolder/resume.pdfFor example, https://myaccount.blob.core.windows.net/my-container/my-folder/subfolder/resume.pdf
    • meta veri_depolama_içerik_türü (EDM. String)-içerik türü blobu yüklemek için kullandığınız kodla belirtilir.metadata_storage_content_type (Edm.String) - content type as specified by the code you used to upload the blob. Örneğin, application/octet-stream.For example, application/octet-stream.
    • meta veri_depolama_son değiştirilen_ (EDM. DateTimeOffset)-blob için son değiştirme zaman damgası.metadata_storage_last_modified (Edm.DateTimeOffset) - last modified timestamp for the blob. Azure Bilişsel Arama, ilk dizinledikten sonra her şeyin yeniden dizinlenmesini önlemek için değişen Blobları tanımlamak üzere bu zaman damgasını kullanır.Azure Cognitive Search uses this timestamp to identify changed blobs, to avoid reindexing everything after the initial indexing.
    • meta veri_depolama_boyutu (EDM. Int64)-BLOB boyutu bayt cinsinden.metadata_storage_size (Edm.Int64) - blob size in bytes.
    • meta veri_depolama_içerik_MD5 (EDM. String)-varsa Blob içeriğinin MD5 karması.metadata_storage_content_md5 (Edm.String) - MD5 hash of the blob content, if available.
    • meta veri_depolama_sas_belirteci (EDM. String)-bloba erişim sağlamak için özel yetenekler tarafından kullanılabilen geçici bir SAS belirteci.metadata_storage_sas_token (Edm.String) - A temporary SAS token that can be used by custom skills to get access to the blob. Bu belirtecin kullanım süreleri dolduğunda daha sonra kullanılmak üzere depolanmamalıdır.This token should not be stored for later use as it might expire.
  • Her belge biçimine özgü meta veri özellikleri buradalistelenen alanlara ayıklanır.Metadata properties specific to each document format are extracted into the fields listed here.

Arama dizininizdeki yukarıdaki özelliklerin tümü için alanları tanımlamanız gerekmez; uygulamanız için gereken özellikleri yakalayın.You don't need to define fields for all of the above properties in your search index - just capture the properties you need for your application.

Not

Genellikle, var olan dizininizdeki alan adları belge ayıklama sırasında oluşturulan alan adlarından farklı olacaktır.Often, the field names in your existing index will be different from the field names generated during document extraction. Azure Bilişsel Arama tarafından sunulan özellik adlarını arama dizininizdeki alan adlarına eşlemek için alan eşlemelerini kullanabilirsiniz.You can use field mappings to map the property names provided by Azure Cognitive Search to the field names in your search index. Aşağıda, alan eşlemelerinin kullanımıyla bir örnek görürsünüz.You will see an example of field mappings use below.

Belge anahtarlarını ve alan eşlemelerini tanımlamaDefining document keys and field mappings

Azure Bilişsel Arama 'de belge anahtarı bir belgeyi benzersiz şekilde tanımlar.In Azure Cognitive Search, the document key uniquely identifies a document. Her arama dizininde Edm. String türünde tam olarak bir anahtar alanı olmalıdır.Every search index must have exactly one key field of type Edm.String. Dizine eklenmekte olan her belge için anahtar alanı gereklidir (aslında yalnızca gerekli olan alandır).The key field is required for each document that is being added to the index (it is actually the only required field).

Hangi ayıklanan alanın, dizininiz için anahtar alanla eşleşmesi gerektiğini dikkatle düşünmeniz gerekir.You should carefully consider which extracted field should map to the key field for your index. Adaylar şunlardır:The candidates are:

  • meta veri_depolama_adı -bu kullanışlı bir aday olabilir, ancak bu, farklı klasörlerde aynı ada sahip bloblarınız olabileceği ve 2) ad, çizgiler gibi belge anahtarlarında geçersiz karakterler içeriyor olabilir.metadata_storage_name - this might be a convenient candidate, but note that 1) the names might not be unique, as you may have blobs with the same name in different folders, and 2) the name may contain characters that are invalid in document keys, such as dashes. base64Encode alan eşleme işlevini kullanarak geçersiz karakterlerle uğraşabilir. bunu yaparsanız, arama gibi API çağrılarına geçirirken belge anahtarlarını kodlamayı unutmayın.You can deal with invalid characters by using the base64Encode field mapping function - if you do this, remember to encode document keys when passing them in API calls such as Lookup. (Örneğin, .NET 'te bu amaçla UrlTokenEncode yöntemini kullanabilirsiniz).(For example, in .NET you can use the UrlTokenEncode method for that purpose).
  • meta veri_depolama_yolu -tam yolun kullanılması benzersizlik sağlar, ancak yol kesinlikle bir belge anahtarında geçersiz/ karakterler içerir.metadata_storage_path - using the full path ensures uniqueness, but the path definitely contains / characters that are invalid in a document key. Yukarıdaki gibi, base64Encode işlevinikullanarak anahtarları kodlama seçeneğiniz vardır.As above, you have the option of encoding the keys using the base64Encode function.
  • Yukarıdaki seçeneklerden hiçbiri sizin için işe çalışmadıysanız, bloblara özel meta veri özelliği ekleyebilirsiniz.If none of the options above work for you, you can add a custom metadata property to the blobs. Ancak, bu seçenek, bu meta veri özelliğini tüm bloblara eklemek için blob karşıya yükleme işleminizi gerektirir.This option does, however, require your blob upload process to add that metadata property to all blobs. Anahtar gerekli bir özellik olduğundan, bu özelliğe sahip olmayan tüm Blobların dizini oluşturulamaz.Since the key is a required property, all blobs that don't have that property will fail to be indexed.

Önemli

Dizinde anahtar alanı için açık eşleme yoksa, Azure Bilişsel Arama anahtar olarak metadata_storage_path kullanır ve temel 64 anahtar değerlerini kodluyor (yukarıdaki ikinci seçenek).If there is no explicit mapping for the key field in the index, Azure Cognitive Search automatically uses metadata_storage_path as the key and base-64 encodes key values (the second option above).

Bu örnekte, belge anahtarı olarak metadata_storage_name alanını seçelim.For this example, let's pick the metadata_storage_name field as the document key. Ayrıca, dizininizin key adlı bir anahtar alanı olduğunu ve belge boyutunu depolamak için fileSize alan olduğunu varsayalım.Let's also assume your index has a key field named key and a field fileSize for storing the document size. İstediğiniz gibi durumlarda, Dizin oluşturucuyu oluştururken veya güncelleştirirken aşağıdaki alan eşlemelerini belirtin:To wire things up as desired, specify the following field mappings when creating or updating your indexer:

"fieldMappings" : [
  { "sourceFieldName" : "metadata_storage_name", "targetFieldName" : "key", "mappingFunction" : { "name" : "base64Encode" } },
  { "sourceFieldName" : "metadata_storage_size", "targetFieldName" : "fileSize" }
]

Bunu bir araya getirmek için, alan eşlemelerini nasıl ekleyebileceğiniz ve mevcut bir dizin oluşturucunun anahtarlarının Base-64 kodlamasını nasıl etkinleştirebileceğiniz aşağıda verilmiştir:To bring this all together, here's how you can add field mappings and enable base-64 encoding of keys for an existing indexer:

PUT https://[service name].search.windows.net/indexers/blob-indexer?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
  "dataSourceName" : " blob-datasource ",
  "targetIndexName" : "my-target-index",
  "schedule" : { "interval" : "PT2H" },
  "fieldMappings" : [
    { "sourceFieldName" : "metadata_storage_name", "targetFieldName" : "key", "mappingFunction" : { "name" : "base64Encode" } },
    { "sourceFieldName" : "metadata_storage_size", "targetFieldName" : "fileSize" }
  ]
}

Not

Alan eşlemeleri hakkında daha fazla bilgi edinmek için Bu makaleyebakın.To learn more about field mappings, see this article.

Hangi Blobların dizine alınacağını denetlemeControlling which blobs are indexed

Hangi Blobların dizine alınacağını ve hangilerinin atlandığını denetleyebilirsiniz.You can control which blobs are indexed, and which are skipped.

Yalnızca belirli dosya uzantılarına sahip Blobları dizine oluşturIndex only the blobs with specific file extensions

Yalnızca indexedFileNameExtensions Dizin Oluşturucu yapılandırma parametresini kullanarak belirttiğiniz dosya adı uzantılarına sahip Blobları dizine ekleyebilirsiniz.You can index only the blobs with the file name extensions you specify by using the indexedFileNameExtensions indexer configuration parameter. Değer, dosya uzantılarının virgülle ayrılmış bir listesini içeren bir dizedir (önde gelen noktayla).The value is a string containing a comma-separated list of file extensions (with a leading dot). Örneğin, yalnızca ' ı dizine eklemek için. PDF ve. DOCX blob 'ları, bunu yapın:For example, to index only the .PDF and .DOCX blobs, do this:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
  ... other parts of indexer definition
  "parameters" : { "configuration" : { "indexedFileNameExtensions" : ".pdf,.docx" } }
}

Belirli dosya uzantılarına sahip Blobları DışlaExclude blobs with specific file extensions

excludedFileNameExtensions yapılandırma parametresini kullanarak, dizin oluşturma işleminden belirli dosya adı uzantılarına sahip Blobları dışlayabilirsiniz.You can exclude blobs with specific file name extensions from indexing by using the excludedFileNameExtensions configuration parameter. Değer, dosya uzantılarının virgülle ayrılmış bir listesini içeren bir dizedir (önde gelen noktayla).The value is a string containing a comma-separated list of file extensions (with a leading dot). Örneğin, tüm Blobları hariç tüm Blobları dizine eklemek için. PNG ve. JPEG uzantıları, bunu yapın:For example, to index all blobs except those with the .PNG and .JPEG extensions, do this:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
  ... other parts of indexer definition
  "parameters" : { "configuration" : { "excludedFileNameExtensions" : ".png,.jpeg" } }
}

Hem indexedFileNameExtensions hem de excludedFileNameExtensions parametreleri varsa, Azure Bilişsel Arama önce indexedFileNameExtensions, sonra da excludedFileNameExtensions' a bakar.If both indexedFileNameExtensions and excludedFileNameExtensions parameters are present, Azure Cognitive Search first looks at indexedFileNameExtensions, then at excludedFileNameExtensions. Bu, aynı dosya uzantısının her iki listede de mevcutsa, dizin oluşturma işleminin dışlanacağını belirtir.This means that if the same file extension is present in both lists, it will be excluded from indexing.

Blob 'un hangi bölümlerinin dizine alınacağını denetlemeControlling which parts of the blob are indexed

dataToExtract yapılandırma parametresi kullanılarak Blobların hangi bölümlerinin dizine alınacağını kontrol edebilirsiniz.You can control which parts of the blobs are indexed using the dataToExtract configuration parameter. Bu, aşağıdaki değerleri alabilir:It can take the following values:

Örneğin, yalnızca depolama meta verilerini indekslemek için şunu kullanın:For example, to index only the storage metadata, use:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
  ... other parts of indexer definition
  "parameters" : { "configuration" : { "dataToExtract" : "storageMetadata" } }
}

Blobların nasıl dizine alınacağını denetlemek için blob meta verilerini kullanmaUsing blob metadata to control how blobs are indexed

Yukarıda açıklanan yapılandırma parametreleri tüm Bloblar için geçerlidir.The configuration parameters described above apply to all blobs. Bazen, ayrı Blobların nasıl dizine alınacağını denetlemek isteyebilirsiniz.Sometimes, you may want to control how individual blobs are indexed. Bunu, aşağıdaki blob meta veri özelliklerini ve değerlerini ekleyerek yapabilirsiniz:You can do this by adding the following blob metadata properties and values:

Özellik adıProperty name Özellik değeriProperty value AçıklamaExplanation
AzureSearch_SkipAzureSearch_Skip "true""true" Blob Dizin oluşturucuyu blobu tamamen atlayacak şekilde yönlendirir.Instructs the blob indexer to completely skip the blob. Meta veri veya içerik ayıklama denenmez.Neither metadata nor content extraction is attempted. Bu, belirli bir blob sürekli olarak başarısız olduğunda ve dizin oluşturma işlemini kesintiye uğradığında yararlı olur.This is useful when a particular blob fails repeatedly and interrupts the indexing process.
AzureSearch_SkipContentAzureSearch_SkipContent "true""true" Bu, yukarıda belirtilen bir Blobun kapsamına alınan "dataToExtract" : "allMetadata" ayarından eşdeğerdir.This is equivalent of "dataToExtract" : "allMetadata" setting described above scoped to a particular blob.

Hatalarla ilgilenmeDealing with errors

Varsayılan olarak, blob Indexer, desteklenmeyen içerik türü (örneğin, bir görüntü) ile bir blob ile karşılaştığında yanıt vermez.By default, the blob indexer stops as soon as it encounters a blob with an unsupported content type (for example, an image). Kuşkusuz, belirli içerik türlerini atlamak için excludedFileNameExtensions parametresini kullanabilirsiniz.You can of course use the excludedFileNameExtensions parameter to skip certain content types. Ancak, tüm olası içerik türlerini önceden bilmeden blob 'ları dizinleyebilirsiniz.However, you may need to index blobs without knowing all the possible content types in advance. Desteklenmeyen bir içerik türüyle karşılaşıldığında dizin oluşturmaya devam etmek için failOnUnsupportedContentType yapılandırma parametresini falseolarak ayarlayın:To continue indexing when an unsupported content type is encountered, set the failOnUnsupportedContentType configuration parameter to false:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
  ... other parts of indexer definition
  "parameters" : { "configuration" : { "failOnUnsupportedContentType" : false } }
}

Bazı Bloblar için Azure Bilişsel Arama, içerik türünü belirleyemiyor veya başka türlü desteklenen içerik türündeki bir belgeyi işleyemez.For some blobs, Azure Cognitive Search is unable to determine the content type, or unable to process a document of otherwise supported content type. Bu hata modunu yoksaymak için failOnUnprocessableDocument yapılandırma parametresini false olarak ayarlayın:To ignore this failure mode, set the failOnUnprocessableDocument configuration parameter to false:

  "parameters" : { "configuration" : { "failOnUnprocessableDocument" : false } }

Azure Bilişsel Arama, dizini oluşturulmuş Blobların boyutunu sınırlandırır.Azure Cognitive Search limits the size of blobs that are indexed. Bu sınırlar Azure bilişsel arama hizmet sınırlarıbölümünde belgelenmiştir.These limits are documented in Service Limits in Azure Cognitive Search. Büyük bir blob, varsayılan olarak hata olarak değerlendirilir.Oversized blobs are treated as errors by default. Ancak, indexStorageMetadataOnlyForOversizedDocuments Configuration parametresini true olarak ayarlarsanız büyük Blobların depolama meta verilerini yine de dizine alabilirsiniz:However, you can still index storage metadata of oversized blobs if you set indexStorageMetadataOnlyForOversizedDocuments configuration parameter to true:

"parameters" : { "configuration" : { "indexStorageMetadataOnlyForOversizedDocuments" : true } }

Blob 'ları ayrıştırırken veya bir dizine belge eklerken, herhangi bir işlem noktasında hatalar meydana geliyorsa dizin oluşturmaya da devam edebilirsiniz.You can also continue indexing if errors happen at any point of processing, either while parsing blobs or while adding documents to an index. Belirli sayıda hatayı yoksaymak için maxFailedItems ve maxFailedItemsPerBatch yapılandırma parametrelerini istenen değerlere ayarlayın.To ignore a specific number of errors, set the maxFailedItems and maxFailedItemsPerBatch configuration parameters to the desired values. Örneğin:For example:

{
  ... other parts of indexer definition
  "parameters" : { "maxFailedItems" : 10, "maxFailedItemsPerBatch" : 10 }
}

Artımlı dizin oluşturma ve silme algılamasıIncremental indexing and deletion detection

Bir blob Dizin Oluşturucuyu bir zamanlamaya göre çalışacak şekilde ayarlarken, blob 'un LastModified zaman damgası tarafından belirlendiği şekilde yalnızca değiştirilen Blobları yeniden dizinleyebilirsiniz.When you set up a blob indexer to run on a schedule, it reindexes only the changed blobs, as determined by the blob's LastModified timestamp.

Not

Değişiklik algılama ilkesi belirtmeniz gerekmez – artımlı dizin oluşturma sizin için otomatik olarak etkinleştirilir.You don't have to specify a change detection policy – incremental indexing is enabled for you automatically.

Belge silmeyi desteklemek için "geçici silme" yaklaşımını kullanın.To support deleting documents, use a "soft delete" approach. Blob 'ları sağ silme, ilgili belgeler arama dizininden kaldırılmaz.If you delete the blobs outright, corresponding documents will not be removed from the search index. Bunun yerine, aşağıdaki adımları kullanın:Instead, use the following steps:

  1. Bilişsel Arama Azure 'da mantıksal olarak silindiğini göstermek için blob 'a özel meta veri özelliği ekleyinAdd a custom metadata property to the blob to indicate to Azure Cognitive Search that it is logically deleted
  2. Veri kaynağında geçici silme algılama ilkesi yapılandırmaConfigure a soft deletion detection policy on the data source
  3. Dizin Oluşturucu blob 'u işledikten sonra (Dizin Oluşturucu durum API 'SI tarafından gösterildiği gibi), blobu fiziksel olarak silebilirsinizOnce the indexer has processed the blob (as shown by the indexer status API), you can physically delete the blob

Örneğin, aşağıdaki ilke, bir blob 'un bir meta veri özelliği IsDeleted, truedeğeri ile bir blob 'unu kabul eder:For example, the following policy considers a blob to be deleted if it has a metadata property IsDeleted with the value true:

PUT https://[service name].search.windows.net/datasources/blob-datasource?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { "connectionString" : "<your storage connection string>" },
    "container" : { "name" : "my-container", "query" : "my-folder" },
    "dataDeletionDetectionPolicy" : {
        "@odata.type" :"#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",     
        "softDeleteColumnName" : "IsDeleted",
        "softDeleteMarkerValue" : "true"
    }
}   

Büyük veri kümelerini dizinlemeIndexing large datasets

Dizin oluşturma Blobları zaman alan bir işlem olabilir.Indexing blobs can be a time-consuming process. Dizin oluşturmak için milyonlarca blob 'un bulunduğu durumlarda, verileri bölümleyerek ve paralel olarak verileri işlemek için birden çok Dizin Oluşturucu kullanarak dizin oluşturmayı hızlandırabilirsiniz.In cases where you have millions of blobs to index, you can speed up indexing by partitioning your data and using multiple indexers to process the data in parallel. Bunu nasıl ayarlayabilmeniz gerekir:Here's how you can set this up:

  • Verilerinizi birden çok blob kapsayıcılarına veya sanal klasöre bölmePartition your data into multiple blob containers or virtual folders

  • Her kapsayıcı veya klasör için bir tane olmak üzere çeşitli Azure Bilişsel Arama veri kaynakları ayarlayın.Set up several Azure Cognitive Search data sources, one per container or folder. Blob klasörünü işaret etmek için query parametresini kullanın:To point to a blob folder, use the query parameter:

    {
        "name" : "blob-datasource",
        "type" : "azureblob",
        "credentials" : { "connectionString" : "<your storage connection string>" },
        "container" : { "name" : "my-container", "query" : "my-folder" }
    }
    
  • Her veri kaynağı için karşılık gelen bir Dizin Oluşturucu oluşturun.Create a corresponding indexer for each data source. Tüm Dizin oluşturucular aynı hedef arama dizinine işaret edebilir.All the indexers can point to the same target search index.

  • Hizmetinizdeki bir arama birimi, belirli bir zamanda bir Dizin Oluşturucu çalıştırabilir.One search unit in your service can run one indexer at any given time. Yukarıda açıklandığı gibi birden çok Dizin Oluşturucu oluşturmak yalnızca aslında paralel olarak çalıştırıldıklarında yararlıdır.Creating multiple indexers as described above is only useful if they actually run in parallel. Birden çok dizin oluşturucuyu paralel olarak çalıştırmak için, uygun sayıda bölüm ve çoğaltma oluşturarak arama hizmetinizi ölçeklendirin.To run multiple indexers in parallel, scale out your search service by creating an appropriate number of partitions and replicas. Örneğin, arama hizmetinizin 6 arama birimi varsa (örneğin, 2 bölüm x 3 çoğaltmalar), 6 Dizin oluşturucular eşzamanlı olarak çalışabilir ve dizin oluşturma sırasında altı kat artışına neden olur.For example, if your search service has 6 search units (for example, 2 partitions x 3 replicas), then 6 indexers can run simultaneously, resulting in a six-fold increase in the indexing throughput. Ölçeklendirme ve kapasite planlaması hakkında daha fazla bilgi edinmek için bkz. Azure bilişsel arama 'de sorgu ve dizin oluşturma iş yükleri için kaynak düzeylerini ölçeklendirme.To learn more about scaling and capacity planning, see Scale resource levels for query and indexing workloads in Azure Cognitive Search.

Dizininizdeki birden fazla kaynaktaki belgeleri "birleştirmek" isteyebilirsiniz.You may want to "assemble" documents from multiple sources in your index. Örneğin, Cosmos DB içinde depolanan diğer meta verilerle bloblardan metin birleştirmek isteyebilirsiniz.For example, you may want to merge text from blobs with other metadata stored in Cosmos DB. Birden çok bölümden arama belgeleri oluşturmak için çeşitli dizin oluşturucularla birlikte gönderme dizin oluşturma API 'sini de kullanabilirsiniz.You can even use the push indexing API together with various indexers to build up search documents from multiple parts.

Bunun çalışması için, tüm dizin oluşturucularının ve diğer bileşenlerin belge anahtarını kabul etmesi gerekir.For this to work, all indexers and other components need to agree on the document key. Bu konuyla ilgili daha fazla bilgi için bkz. birden çok Azure veri kaynağını dizinegönderme.For additional details on this topic, refer to Index multiple Azure data sources. Ayrıntılı bir adım adım için bkz. bu dış Makale: belgeleri Azure bilişsel arama diğer verilerle birleştirme.For a detailed walk-through, see this external article: Combine documents with other data in Azure Cognitive Search.

Düz metin dizini oluşturmaIndexing plain text

Tüm bloblarınız aynı kodlamada düz metin içeriyorsa, metin ayrıştırma modunukullanarak dizin oluşturma performansını önemli ölçüde artırabilirsiniz.If all your blobs contain plain text in the same encoding, you can significantly improve indexing performance by using text parsing mode. Metin ayrıştırma modunu kullanmak için parsingMode yapılandırma özelliğini textolarak ayarlayın:To use text parsing mode, set the parsingMode configuration property to text:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key]

{
  ... other parts of indexer definition
  "parameters" : { "configuration" : { "parsingMode" : "text" } }
}

Varsayılan olarak, UTF-8 kodlaması varsayılır.By default, the UTF-8 encoding is assumed. Farklı bir kodlama belirtmek için encoding yapılandırma özelliğini kullanın:To specify a different encoding, use the encoding configuration property:

{
  ... other parts of indexer definition
  "parameters" : { "configuration" : { "parsingMode" : "text", "encoding" : "windows-1252" } }
}

İçerik türüne özgü meta veri özellikleriContent type-specific metadata properties

Aşağıdaki tabloda her belge biçimi için yapılan işlem özetlenmektedir ve Azure Bilişsel Arama tarafından ayıklanan meta veri özellikleri açıklanmaktadır.The following table summarizes processing done for each document format, and describes the metadata properties extracted by Azure Cognitive Search.

Belge biçimi/içerik türüDocument format / content type İçerik türü belirli meta veri özellikleriContent-type specific metadata properties İşleme ayrıntılarıProcessing details
HTML (metin/html)HTML (text/html) metadata_content_encoding
metadata_content_type
metadata_language
metadata_description
metadata_keywords
metadata_title
HTML biçimlendirmesini şerit ve metin AyıklaStrip HTML markup and extract text
PDF (uygulama/PDF)PDF (application/pdf) metadata_content_type
metadata_language
metadata_author
metadata_title
Gömülü belgeler dahil olmak üzere metni Ayıkla (görüntüler hariç)Extract text, including embedded documents (excluding images)
DOCX (application/vnd. openxmlformats-officedocument. WordprocessingML. Document)DOCX (application/vnd.openxmlformats-officedocument.wordprocessingml.document) metadata_content_type
metadata_author
metadata_character_count
metadata_creation_date
metadata_last_modified
metadata_page_count
metadata_word_count
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
DOC (Application/msword)DOC (application/msword) metadata_content_type
metadata_author
metadata_character_count
metadata_creation_date
metadata_last_modified
metadata_page_count
metadata_word_count
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
DOCM (application/vnd. MS-Word. Document. macroenabled. 12)DOCM (application/vnd.ms-word.document.macroenabled.12) metadata_content_type
metadata_author
metadata_character_count
metadata_creation_date
metadata_last_modified
metadata_page_count
metadata_word_count
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
WORD XML (application/vnd. MS-word2006ml)WORD XML (application/vnd.ms-word2006ml) metadata_content_type
metadata_author
metadata_character_count
metadata_creation_date
metadata_last_modified
metadata_page_count
metadata_word_count
XML işaretlemesini şerit ve metin AyıklaStrip XML markup and extract text
WORD 2003 XML (application/vnd. MS-WordML)WORD 2003 XML (application/vnd.ms-wordml) metadata_content_type
metadata_author
metadata_creation_date
XML işaretlemesini şerit ve metin AyıklaStrip XML markup and extract text
XLSX (application/vnd. openxmlformats-officedocument. elektronik sayfaml. Sheet)XLSX (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) metadata_content_type
metadata_author
metadata_creation_date
metadata_last_modified
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
XLS (application/vnd. MS-Excel)XLS (application/vnd.ms-excel) metadata_content_type
metadata_author
metadata_creation_date
metadata_last_modified
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
XLSM (application/vnd. MS-Excel. Sheet. makroenabled. 12)XLSM (application/vnd.ms-excel.sheet.macroenabled.12) metadata_content_type
metadata_author
metadata_creation_date
metadata_last_modified
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
PPTX (application/vnd. openxmlformats-officedocument. presentationml. Presentation)PPTX (application/vnd.openxmlformats-officedocument.presentationml.presentation) metadata_content_type
metadata_author
metadata_creation_date
metadata_last_modified
metadata_slide_count
metadata_title
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
PPT (application/vnd. MS-PowerPoint)PPT (application/vnd.ms-powerpoint) metadata_content_type
metadata_author
metadata_creation_date
metadata_last_modified
metadata_slide_count
metadata_title
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
PPTM (application/vnd. MS-PowerPoint. Presentation. macroenabled. 12)PPTM (application/vnd.ms-powerpoint.presentation.macroenabled.12) metadata_content_type
metadata_author
metadata_creation_date
metadata_last_modified
metadata_slide_count
metadata_title
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
MSG (application/vnd. MS-Outlook)MSG (application/vnd.ms-outlook) metadata_content_type
metadata_message_from
metadata_message_from_email
metadata_message_to
metadata_message_to_email
metadata_message_cc
metadata_message_cc_email
metadata_message_bcc
metadata_message_bcc_email
metadata_creation_date
metadata_last_modified
metadata_subject
Ekleri dahil metin AyıklaExtract text, including attachments
ODT (application/vnd. oassıs. OpenDocument. Text)ODT (application/vnd.oasis.opendocument.text) metadata_content_type
metadata_author
metadata_character_count
metadata_creation_date
metadata_last_modified
metadata_page_count
metadata_word_count
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
ODS (application/vnd. oassıs. OpenDocument. Spreadsheet)ODS (application/vnd.oasis.opendocument.spreadsheet) metadata_content_type
metadata_author
metadata_creation_date
metadata_last_modified
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
ODP (application/vnd. oassıs. OpenDocument. Presentation)ODP (application/vnd.oasis.opendocument.presentation) metadata_content_type
metadata_author
metadata_creation_date
metadata_last_modified
title
Gömülü belgeler dahil olmak üzere metni AyıklaExtract text, including embedded documents
ZIP (uygulama/zip)ZIP (application/zip) metadata_content_type Arşivdeki tüm belgelerden metin AyıklaExtract text from all documents in the archive
GZ (uygulama/gzip)GZ (application/gzip) metadata_content_type Arşivdeki tüm belgelerden metin AyıklaExtract text from all documents in the archive
EPUB (Application/EPUB + zip)EPUB (application/epub+zip) metadata_content_type
metadata_author
metadata_creation_date
metadata_title
metadata_description
metadata_language
metadata_keywords
metadata_identifier
metadata_publisher
Arşivdeki tüm belgelerden metin AyıklaExtract text from all documents in the archive
XML (Application/XML)XML (application/xml) metadata_content_type
metadata_content_encoding
XML işaretlemesini şerit ve metin AyıklaStrip XML markup and extract text
JSON (uygulama/JSON)JSON (application/json) metadata_content_type
metadata_content_encoding
Metin ayıklamaExtract text
NOTE: bir JSON blobundan birden çok belge alanı ayıklamanız gerekiyorsa, Ayrıntılar için bkz. JSON Bloblarını dizine eklemeNOTE: If you need to extract multiple document fields from a JSON blob, see Indexing JSON blobs for details
EML (ileti/rfc822)EML (message/rfc822) metadata_content_type
metadata_message_from
metadata_message_to
metadata_message_cc
metadata_creation_date
metadata_subject
Ekleri dahil metin AyıklaExtract text, including attachments
RTF (uygulama/RTF)RTF (application/rtf) metadata_content_type
metadata_author
metadata_character_count
metadata_creation_date
metadata_page_count
metadata_word_count
Metin ayıklamaExtract text
Düz metin (metin/düz)Plain text (text/plain) metadata_content_type
metadata_content_encoding
Metin ayıklamaExtract text

Azure Bilişsel Arama daha iyi hale getirmemize yardımcı olunHelp us make Azure Cognitive Search better

Geliştirmeler için özellik istekleriniz veya fikirler varsa UserVoice sitemizibize tanıyın.If you have feature requests or ideas for improvements, let us know on our UserVoice site.