Büyük/küçük harfe duyarlı olmayan filtreleme, model oluşturma ve sıralama için metin normalleştirme

Önemli

Bu özellik, Ek Kullanım Koşulları altında genel önizleme aşamasındadır. Önizleme REST API'si bu özelliği destekler.

Azure AI Search'te normalleştirici, "filtrelenebilir", "modellenebilir" veya "sıralanabilir" olarak işaretlenmiş alanlar üzerinde anahtar sözcük eşleştirme için metinleri önceden işleyen bir bileşendir. Metin çözümleyicileriyle eşleştirilmiş tam metin "aranabilir" alanların aksine, filtre modelli sıralama işlemleri için oluşturulan içerik analiz veya belirteç oluşturma işlemine tabi tutulmaz. Büyük/küçük harf ve karakter farklılıkları ortaya çıktığında metin analizinin atlanması beklenmeyen sonuçlara neden olabilir; bu nedenle içeriğinizdeki varyasyonları homojen hale getirmek için bir normalleştiriciye ihtiyacınız vardır.

Normalleştirici uygulayarak sonuçları geliştiren basit metin dönüştürmeleri elde edebilirsiniz:

  • Tutarlı büyük/küçük harf (tümü küçük veya büyük harf gibi)
  • ö veya ê gibi aksanları ve aksanları ASCII eşdeğer karakterleri "o" ve "e" olarak normalleştirin
  • ve boşluk gibi - karakterleri kullanıcı tarafından belirtilen bir karakterle eşleme

Normalleştiricilerin avantajları

Arama dizininden belge aramak ve almak için sorgu girişinin belgenin içeriğiyle eşleşmesi gerekir. Eşleştirme, "arama" çağrısı yaptığınızda olduğu gibi belirteçli içerik üzerinden veya istek bir filtre, model veya orderby işlemiyse belirteçsiz içerik üzerinden yapılır.

Belirteçsiz içerik de analiz edilmediğinden, içerikteki küçük farklılıklar birbirinden farklı değerler olarak değerlendirilir. Aşağıdaki örnekleri değerlendirin:

  • $filter=City eq 'Las Vegas'yalnızca tam metni "Las Vegas" içeren belgeleri döndürür ve kullanım örneği büyük/küçük harfe bakılmaksızın tüm belgeleri gerektirdiğinde yetersiz olan ve "las vegas"ile "LAS VEGAS" belgeleri hariç tutar.

  • search=*&facet=City,count:5, "LAS VEGAS" ve "las vegas" değerlerini aynı şehir olmasına rağmen farklı değerler olarak döndürür"Las Vegas".

  • search=usa&$orderby=City, söz konusu durumdan bağımsız olarak aynı şehirleri birlikte sıralamak olsa bile, şehirlerini sözcük düzeninde "Las Vegas""Seattle""las vegas"döndürür.

Dizin oluşturma ve sorgu yürütme sırasında çağrılan normalleştirici, filtre, model ve sıralama senaryoları için metindeki küçük farkları düzelten hafif dönüştürmeler ekler. Önceki örneklerde "Las Vegas" , daha tekdüzen sonuçlar elde etmek için değişkenleri seçtiğiniz normalleştiriciye göre (örneğin, tüm metinler küçük harfle gösterilir) işlenir.

Normalleştirici belirtme

Normalleştiriciler bir dizin tanımında, alan başına, "filtrelenebilir", "sıralanabilir" veya "modellenebilir" özelliklerden en az biri true olarak ayarlanmış metin alanlarına (Edm.String ve Collection(Edm.String)) göre belirtilir. Normalleştiricinin ayarlanması isteğe bağlıdır ve varsayılan olarak null'tır. Özel bir normalleştirici yapılandırmadan önce önceden tanımlanmış normalleştiricileri değerlendirmenizi öneririz.

Normalleştiriciler yalnızca dizine yeni bir alan eklediğinizde belirtilebilir, bu nedenle mümkünse normalleştirme gereksinimlerini önceden değerlendirmeyi deneyin ve dizinleri bırakarak yeniden oluştururken geliştirmenin ilk aşamalarında normalleştiriciler atayın.

  1. Dizinde alan tanımı oluştururken , "normalizer" özelliğini şu değerlerden birine ayarlayın: "küçük harf" gibi önceden tanımlanmış bir normalleştirici veya özel bir normalleştirici (aynı dizin şemasında tanımlanır).

    "fields": [
     {
       "name": "Description",
       "type": "Edm.String",
       "retrievable": true,
       "searchable": true,
       "filterable": true,
       "analyzer": "en.microsoft",
       "normalizer": "lowercase"
       ...
     }
    ]
    
  2. Özel normalleştiriciler önce dizinin "normalleştiriciler" bölümünde tanımlanır ve ardından önceki adımda gösterildiği gibi alan tanımına atanır. Daha fazla bilgi için bkz . Dizin Oluşturma ve ayrıca Özel normalleştiriciler ekleme.

    "fields": [
     {
       "name": "Description",
       "type": "Edm.String",
       "retrievable": true,
       "searchable": true,
       "analyzer": null,
       "normalizer": "my_custom_normalizer"
     },
    

Dekont

Varolan bir alanın normalleştiricisini değiştirmek için dizini tamamen yeniden oluşturun (tek tek alanları yeniden oluşturamazsınız).

Dizinleri yeniden oluşturmanın maliyetli olduğu üretim dizinleri için iyi bir geçici çözüm, eskisiyle aynı ancak yeni normalleştirici ile yeni bir alan oluşturmak ve eskisinin yerine kullanmaktır. Yeni alanı eklemek için Dizini Güncelleştir'i ve doldurmak için mergeOrUpload komutunu kullanın. Daha sonra, planlanan dizin bakımı kapsamında, eski alanları kaldırmak için dizini temizleyebilirsiniz.

Önceden tanımlanmış ve özel normalleştiriciler

Azure AI Search, yaygın kullanım örnekleri için yerleşik normalleştiriciler ve gerektiğinde özelleştirme özelliği sağlar.

Kategori Açıklama
Önceden tanımlanmış normalleştiriciler Kullanıma sunulmadan sağlanır ve herhangi bir yapılandırma olmadan kullanılabilir.
Özel normalleştiriciler1 Gelişmiş senaryolar için. Karakter ve belirteç filtrelerinden oluşan mevcut öğelerin bir bileşiminin kullanıcı tanımlı yapılandırılmasını gerektirir.

(1) Normalleştiriciler her zaman tek bir belirteç ürettiğinden özel normalleştiriciler belirteç oluşturucuları belirtmez.

Normalleştiriciler başvurusu

Önceden tanımlanmış normalleştiriciler

Adı Açıklama ve Seçenekler
standart Metni küçük harfle ve ardından asciifolding ile küçük harfle ekler.
Küçük Karakterleri küçük harfe dönüştürür.
Büyük Karakterleri büyük harfe dönüştürür.
asciifolding Temel Latin Unicode bloğunda olmayan karakterleri varsa ASCII eşdeğerine dönüştürür. Örneğin, olarak değiştiriliyor àa.
elision Belirteçlerin başından elision kaldırır.

Desteklenen karakter filtreleri

Normalleştiriciler, özel çözümleyici karakter filtrelerinde karşılıklarıyla aynı olan iki karakter filtresini destekler:

Desteklenen belirteç filtreleri

Aşağıdaki liste normalleştiriciler için desteklenen belirteç filtrelerini gösterir ve özel çözümleyicilerde kullanılan genel belirteç filtrelerinin bir alt kümesidir.

Özel normalleştiriciler ekleme

Özel normalleştiriciler dizin şeması içinde tanımlanır. Tanım bir ad, tür, bir veya daha fazla karakter filtresi ve belirteç filtresi içerir. Karakter filtreleri ve belirteç filtreleri, özel bir normalleştiricinin yapı taşlarıdır ve metnin işlenmesinden sorumludur. Bu filtreler soldan sağa uygulanır.

token_filter_name_1, belirteç filtresinin adıdır ve char_filter_name_2char_filter_name_1 karakter filtrelerinin adlarıdır (geçerli değerler için aşağıdaki desteklenen belirteç filtreleri ve desteklenen karakter filtreleritablolarına bakın).

"normalizers":(optional)[
   {
      "name":"name of normalizer",
      "@odata.type":"#Microsoft.Azure.Search.CustomNormalizer",
      "charFilters":[
         "char_filter_name_1",
         "char_filter_name_2"
      ],
      "tokenFilters":[
         "token_filter_name_1"
      ]
   }
],
"charFilters":(optional)[
   {
      "name":"char_filter_name_1",
      "@odata.type":"#char_filter_type",
      "option1": "value1",
      "option2": "value2",
      ...
   }
],
"tokenFilters":(optional)[
   {
      "name":"token_filter_name_1",
      "@odata.type":"#token_filter_type",
      "option1": "value1",
      "option2": "value2",
      ...
   }
]

Özel normalleştiriciler dizin oluşturma sırasında veya daha sonra mevcut bir dizin güncelleştirilerek eklenebilir. Var olan bir dizine özel normalleştirici eklemek için Güncelleştirme Dizini'nde "allowIndexDowntime" bayrağının belirtilmesi gerekir ve dizin birkaç saniye boyunca kullanılamaz duruma gelir.

Özel normalleştirici örneği

Aşağıdaki örnekte, karşılık gelen karakter filtreleri ve belirteç filtreleri ile özel bir normalleştirici tanımı gösterilmektedir. Karakter filtreleri ve belirteç filtreleri için özel seçenekler, adlandırılmış yapılar olarak ayrı ayrı belirtilir ve aşağıda gösterildiği gibi normalleştirici tanımında başvurulur.

  • Dizin tanımının "normalleştiriciler" bölümünde "my_custom_normalizer" adlı özel bir normalleştirici tanımlanır.

  • Normalleştirici iki karakter filtresi ve üç belirteç filtresinden oluşur: elision, küçük harf ve özelleştirilmiş asciifolding filtresi "my_asciifolding".

  • İlk karakter filtresi "map_dash" tüm tireleri alt çizgilerle değiştirirken, ikincisi "remove_whitespace" tüm boşlukları kaldırır.

  {
     "name":"myindex",
     "fields":[
        {
           "name":"id",
           "type":"Edm.String",
           "key":true,
           "searchable":false,
        },
        {
           "name":"city",
           "type":"Edm.String",
           "filterable": true,
           "facetable": true,
           "normalizer": "my_custom_normalizer"
        }
     ],
     "normalizers":[
        {
           "name":"my_custom_normalizer",
           "@odata.type":"#Microsoft.Azure.Search.CustomNormalizer",
           "charFilters":[
              "map_dash",
              "remove_whitespace"
           ],
           "tokenFilters":[              
              "my_asciifolding",
              "elision",
              "lowercase",
           ]
        }
     ],
     "charFilters":[
        {
           "name":"map_dash",
           "@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
           "mappings":["-=>_"]
        },
        {
           "name":"remove_whitespace",
           "@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
           "mappings":["\\u0020=>"]
        }
     ],
     "tokenFilters":[
        {
           "name":"my_asciifolding",
           "@odata.type":"#Microsoft.Azure.Search.AsciiFoldingTokenFilter",
           "preserveOriginal":true
        }
     ]
  }

Ayrıca bkz.