Azure AI Search'teki eş anlamlılar

Arama hizmetinde eş anlamlı eşlemeleri, eşdeğer terimleri ilişkilendiren ve kullanıcının terimi gerçekten sağlaması gerekmeden sorgu kapsamını genişleten genel bir kaynaktır. Örneğin, "köpek", "köpek" ve "köpek yavrusu" eşlenmiş eşlenmiş eş anlamlılar olduğunu varsayarsak, "köpek" ile ilgili bir sorgu "köpek" içeren bir belgede eşleşir.

Eş anlamlılar oluşturma

Eş anlamlı eşlemesi, bir kez oluşturulabilen ve birçok dizin tarafından kullanılabilen bir varlıktır. Hizmet katmanı, Ücretsiz ve Temel katmanlar için üç eş anlamlı eşlemeden Standart katmanlar için 20'ye kadar değişen eş anlamlı eşlemeleri oluşturabileceğinizi belirler.

İçeriğiniz teknik jargon, argo veya belirsiz terminoloji içeriyorsa, İngilizce ve Fransızca sürümleri veya sözcük terimleri gibi farklı diller için birden çok eş anlamlı eşleme oluşturabilirsiniz. Arama hizmetinizde birden çok eş anlamlı eşlemesi oluşturabilmenize rağmen, bir dizin içinde alan tanımında yalnızca bir eş anlamlı eşleme ataması olabilir.

Eş anlamlı eşlemesi, eş anlamlı eşleme girdileri olarak işlev gösteren ad, biçim ve kurallardan oluşur. Desteklenen tek biçim , solrbiçimi ise solr kural oluşturma işlemini belirler.

POST /synonymmaps?api-version=2023-11-01
{
    "name": "geo-synonyms",
    "format": "solr",
    "synonyms": "
        USA, United States, United States of America\n
        Washington, Wash., WA => WA\n"
}

Eş anlamlı eşlem oluşturmak için bunu program aracılığıyla yapın (portal eş anlamlı eşleme tanımlarını desteklemez):

Kuralları tanımlama

Eşleme kuralları, Apache Solr'ın şu belgede açıklanan açık kaynak eş anlamlı filtre belirtimine uyar: SynonymFilter. solr biçimi iki tür kuralı destekler:

  • denklik (burada terimler sorgudaki eşit yedeklerdir)

  • açık eşlemeler (burada terimler sorgudan önce bir açık terimle eşlenir)

Her kural yeni satır karakteri (\n ) ile sınırlandırılmalıdır. Ücretsiz bir hizmette eş anlamlı eşleme başına en fazla 5.000 kural ve diğer katmanlarda harita başına 20.000 kural tanımlayabilirsiniz. Her kural en fazla 20 genişletmeye (veya bir kuraldaki öğelere) sahip olabilir. Daha fazla bilgi için bkz . Eş anlamlı sınırları.

Sorgu ayrıştırıcıları, büyük veya küçük harf terimlerini otomatik olarak küçük harfe çevirir, ancak dizede virgül veya tire gibi özel karakterleri korumak istiyorsanız eş anlamlı eşlemeyi oluştururken uygun kaçış karakterlerini ekleyin.

Denklik kuralları

Eşdeğer terimlerin kuralları aynı kural içinde virgülle ayrılmıştır. İlk örnekte, üzerindeki USA bir sorgu OR olarak USA"United States""United States of America"genişletiliyor. Bir tümcecikle eşleştirmek istiyorsanız, sorgunun kendisinin tırnak içine alınmış bir tümcecik sorgusu olması gerektiğine dikkat edin.

Eşdeğerlik örneğinde, için dog bir sorgu sorguyu ve caninedeğerlerini de içerecek puppy şekilde genişletir.

{
"format": "solr",
"synonyms": "
    USA, United States, United States of America\n
    dog, puppy, canine\n
    coffee, latte, cup of joe, java\n"
}

Açık eşleme

Açık eşleme kuralları bir okla =>gösterilir. Belirtildiğinde, arama sorgusunun sol tarafıyla => eşleşen bir terim dizisi, sorgu zamanında sağ taraftaki alternatiflerle değiştirilir.

Açık durumda, veya için WashingtonWash.WA bir sorgu olarak WAyeniden yazılır ve sorgu altyapısı yalnızca terimindeki WAeşleşmeleri arar. Açık eşleme yalnızca belirtilen yönde geçerlidir ve bu durumda sorguyu WAWashington yeniden yazmaz.

{
"format": "solr",
"synonyms": "
    Washington, Wash., WA => WA\n
    California, Calif., CA => CA\n"
}

Özel karakterlerden kaçış

Tam metin aramasında eş anlamlılar, diğer tüm sorgu terimleri gibi sorgu işleme sırasında analiz edilir ve bu da ayrılmış ve özel karakterlerle ilgili kuralların eş anlamlı haritanızdaki terimler için geçerli olduğu anlamına gelir. Kaçış gerektiren karakterlerin listesi basit söz dizimi ile tam söz dizimi arasında değişiklik gösterir:

Aksi takdirde dizin oluşturma sırasında varsayılan çözümleyici tarafından atılacak karakterleri korumanız gerekiyorsa, bunları koruyan bir çözümleyici değiştirmeniz gerektiğini unutmayın. Bazı seçenekler arasında hecelenmiş sözcükleri koruyan Microsoft doğal dil çözümleyicileri veya daha karmaşık desenler için özel bir çözümleyici bulunur. Daha fazla bilgi için bkz . Kısmi terimler, desenler ve özel karakterler.

Aşağıdaki örnekte, ters eğik çizgiyle bir karakterden kaçış örneği gösterilmektedir:

{
    "format": "solr",
    "synonyms": "WA\, USA, WA, Washington\n"
}

Ters eğik çizgi, JSON ve C# gibi diğer dillerde özel bir karakter olduğundan, muhtemelen iki kez kaçış yapmanız gerekir. Örneğin, yukarıdaki eş anlamlı eşlemesi için REST API'ye gönderilen JSON şöyle görünür:

{
    "format":"solr",
    "synonyms": "WA\\, USA, WA, Washington"
}

Eş anlamlı haritaları karşıya yükleme ve yönetme

Daha önce belirtildiği gibi, sorgu ve dizin oluşturma iş yüklerini kesintiye uğratmadan eş anlamlı eşleme oluşturabilir veya güncelleştirebilirsiniz. Eş anlamlı eşlemesi tek başına bir nesnedir (dizinler veya veri kaynakları gibi) ve alan kullanmadıkça güncelleştirmeler dizin oluşturmanın veya sorguların başarısız olmasına neden olmaz. Ancak, bir alan tanımına eş anlamlı eşlem eklediğinizde, eş anlamlı eşlemini silerseniz, söz konusu alanları içeren tüm sorgular 404 hatasıyla başarısız olur.

Eş anlamlı eşlem oluşturma, güncelleştirme ve silme işlemleri her zaman belgenin tamamına yönelik bir işlemdir ve eş anlamlı eşlemenin bölümlerini artımlı olarak güncelleştiremez veya silemezsiniz. Tek bir kuralın bile güncelleştirilmesi için yeniden yükleme gerekir.

Alanlara eş anlamlılar atama

Eş anlamlı eşlemini karşıya yükledikten sonra, içeren alanlarda veya Collection(Edm.String)türündeki Edm.String alanlarda "searchable":trueeş anlamlıları etkinleştirebilirsiniz. Belirtildiği gibi, alan tanımı yalnızca bir eş anlamlı eşlem kullanabilir.

POST /indexes?api-version=2020-06-30
{
    "name":"hotels-sample-index",
    "fields":[
        {
            "name":"description",
            "type":"Edm.String",
            "searchable":true,
            "synonymMaps":[
            "en-synonyms"
            ]
        },
        {
            "name":"description_fr",
            "type":"Edm.String",
            "searchable":true,
            "analyzer":"fr.microsoft",
            "synonymMaps":[
            "fr-synonyms"
            ]
        }
    ]
}

Eşdeğer veya eşlenmiş alanlarda sorgu

Eş anlamlılar eklemek sorgu yapısına yeni gereksinimler getirmez. Eş anlamlıları eklemeden önce yaptığınız gibi terim ve tümcecik sorguları oluşturabilirsiniz. Tek fark, eş anlamlı eşlemesinde bir sorgu terimi varsa, sorgu altyapısının kurala bağlı olarak terimi veya tümceciği genişletmesi veya yeniden yazmasıdır.

Sorgu yürütme sırasında eş anlamlılar nasıl kullanılır?

Eş anlamlılar, bir dizinin içeriğini eşdeğer terimlerle tamamlayan bir sorgu genişletme tekniğidir, ancak yalnızca eş anlamlı ataması olan alanlar için kullanılır. Alan kapsamlı bir sorgu eş anlamlı etkinleştirilmiş bir alanı dışlarsa eş anlamlı eşleminden eşleşme görmezsiniz.

Eş anlamlı özellikli alanlar için eş anlamlılar, ilişkili alanla aynı metin analizine tabidir. Örneğin, bir alan standart Lucene çözümleyicisi kullanılarak analiz edilirse, eş anlamlı terimler de sorgu zamanında standart Lucene çözümleyicisine tabi olur. Noktalama işaretleri veya tireler gibi noktalama işaretlerini korumak istiyorsanız, eş anlamlı terimde alana içerik koruma çözümleyicisi uygulayın.

Dahili olarak, eş anlamlılar özelliği özgün sorguyu OR işleciyle eş anlamlılarla yeniden yazar. Bu nedenle, isabet vurgulama ve puanlama profilleri özgün terimi ve eş anlamlıları eşdeğer olarak değerlendirir.

Eş anlamlılar yalnızca serbest biçimli metin sorgularına uygulanır ve filtreler, modeller, otomatik tamamlama veya öneriler için desteklenmez. Otomatik tamamlama ve öneriler yalnızca özgün terimi temel alır; eş anlamlı eşleşmeleri yanıtta görünmez.

Eş anlamlı genişletmeleri joker karakter arama terimleri için geçerli değildir; ön ek, belirsiz ve regex terimleri genişletilmemiştir.

Eş anlamlı genişletme ve joker karakter, regex veya benzer aramalar uygulayan tek bir sorgu yapmanız gerekiyorsa, OR söz dizimini kullanarak sorguları birleştirebilirsiniz. Örneğin, basit sorgu söz dizimi için eş anlamlıları joker karakterlerle birleştirmek için terimi olacaktır <query> | <query>*.

Geliştirme (üretim dışı) ortamında mevcut bir dizininiz varsa, eş anlamlıların eklenmesinin, puanlama profilleri, isabet vurgulama ve öneriler gibi arama deneyimini nasıl değiştirdiğini görmek için küçük bir sözlükle denemeler yapın.

Sonraki adımlar