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 , solr
biç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):
- Eş Anlamlı Eşlemesi (REST API) oluşturun. Bu başvuru en açıklayıcıdır.
- SynonymMap sınıfı (.NET) ve Eş anlamlı eşleme oluşturma (Azure SDK örneği)
- SynonymMap sınıfı (Python)
- SynonymMap arabirimi (JavaScript)
- SynonymMap sınıfı (Java)
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 canine
değ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 Washington
Wash.
WA
bir sorgu olarak WA
yeniden yazılır ve sorgu altyapısı yalnızca terimindeki WA
eşleşmeleri arar. Açık eşleme yalnızca belirtilen yönde geçerlidir ve bu durumda sorguyu WA
Washington
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:
- basit söz dizimi
+ | " ( ) ' \
- tam söz dizimi
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \ /
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":true
eş anlamlıları etkinleştirebilirsiniz. Belirtildiği gibi, alan tanımı yalnızca bir eş anlamlı eşlem kullanabilir.
POST /indexes?api-version=2023-11-01
{
"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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin