Azure Bilişsel Arama eş anlamlılar
Bir arama hizmeti içinde, eş anlamlı eşlemeler, bir sorgu kapsamını, Kullanıcı tarafından gerçekten sağlanması gerekmeden bir sorgunun kapsamını genişleterek eşdeğer terimleri ilişkilendiren genel bir kaynaktır. Örneğin, "köpek", "Canine" ve "pupru" adlı eşanlamlı sözcükler, "köpek" içeren bir belge üzerinde "Canine" bir sorgu eşleştirecektir.
Eş anlamlı oluştur
Eş anlamlı eşleme, bir kez oluşturulabilen ve çok sayıda dizin tarafından kullanılan bir varlıktır. Hizmet katmanı , ücretsiz ve temel katmanların üç eş anlamlı haritalarından ve Standart katmanlar için 20 ' ye kadar olan oluşturabileceğiniz eş anlamlı harita sayısını belirler.
Ingilizce ve Fransızca sürümleri gibi farklı diller için birden çok eş anlamlı harita veya içeriğiniz teknik veya belirsiz terminoloji içeriyorsa, lexsimgeler oluşturabilirsiniz. Arama hizmetinizde birden fazla eş anlamlı harita oluşturabilseniz de bir alan bunlardan yalnızca birini kullanabilir.
Eş anlamlı eşleme, eş anlamlı eşleme girişleri olarak işlev gösteren ad, biçim ve kurallardan oluşur. Desteklenen tek Biçim solr ve solr Biçim kural oluşturmayı belirler.
POST /synonymmaps?api-version=2020-06-30
{
"name": "geo-synonyms",
"format": "solr",
"synonyms": "
USA, United States, United States of America\n
Washington, Wash., WA => WA\n"
}
Bir eş anlamlı eşleme oluşturmak için, bunu programlı olarak yapın (portal, eş anlamlı eşleme tanımlarını desteklemez):
- Eş anlamlı eşleme oluşturma (REST API). Bu başvuru en açıklayıcı bir addır.
- Eşanlamlı (.net) ve C# kullanarak eşanlamlı Ekle
- Eş Eşmap sınıfı (Python)
- Eş eşleme arabirimi (JavaScript)
- Eşanlamlı, Eşeşleme sınıfı (Java)
Kuralları tanımlama
Eşleme kuralları, bu belgede açıklanan Apache Solr 'nin açık kaynaklı eş anlamlı filtre belirtimine uyar: eşanlamlı Ymfilter. solr Biçim iki tür kuralı destekler:
denkliği (koşullar sorguda eşit olarak bulunur)
Açık eşlemeler (koşullar sorgulanmadan önce bir açık terime eşlenir)
Her kuralın yeni satır karakteriyle () ayrılmış olması gerekir \n . Eş anlamlı eşleme başına en fazla 5.000 kuralı, diğer katmanlarda de harita başına 20.000 kural olarak tanımlayabilirsiniz. Her kural en fazla 20 genişleme (veya bir kuraldaki öğe) içerebilir. Daha fazla bilgi için bkz. eş anlamlı sınırları.
Sorgu Çözümleyicileri, büyük veya karışık bir servis talebi için büyük/küçük harfe sahip olur, ancak dizedeki bir virgül veya tire gibi özel karakterleri korumak istiyorsanız, eş anlamlı eşleme oluştururken uygun kaçış karakterlerini ekleyin.
Denkliği kuralları
Denk terimlerin kuralları aynı kural içinde virgülle ayrılmıştır. İlk örnekte, üzerindeki bir sorgu USA USA veya veya olarak genişletilir "United States" "United States of America" . Bir tümcecik üzerinde eşleştirmek istiyorsanız, sorgunun kendisi de tırnak içine alınmış tümcecik sorgusu olması gerektiğini unutmayın.
Denklik durumunda, sorgusu dog da dahil olmak üzere sorguyu genişletir puppy canine .
{
"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, sol tarafıyla eşleşen bir arama sorgusunun terim sırası, => sorgu saatinin sağ tarafında bulunan alternatiflerle birlikte değişir.
Açık durumda, veya için bir sorgu Washington olarak yeniden Wash. WA yazılır WA ve sorgu altyapısı yalnızca dönemde eşleşmeleri arar WA . Açık eşleme yalnızca belirtilen yönde geçerlidir ve bu durumda sorguyu yeniden yazmaz WA Washington .
{
"format": "solr",
"synonyms": "
Washington, Wash., WA => WA\n
California, Calif., CA => CA\n"
}
Özel karakterleri kaçış
Tam metin aramasında, eş anlamlılar, sorgu işleme sırasında tıpkı diğer sorgu terimleriyle benzer şekilde çözümlenir. Bu, ayrılmış ve özel karakterlerin etrafındaki kuralların, eş anlamlı Haritalarınızın koşullarına uygun olduğu anlamına gelir. Kaçış gerektiren karakterlerin listesi, basit sözdizimi ve tam sözdizimi arasında farklılık gösterir:
- basit sözdizimi
+ | " ( ) ' \ - tam sözdizimi
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \ /
Aksi takdirde, dizin oluşturma sırasında varsayılan çözümleyici tarafından atılacak karakterleri korumanız gerekiyorsa, bunları koruyan bir Çözümleyicisi yerine getirmeniz gerekir. Bazı seçimler, hecelenmiş kelimeleri koruyan Microsoft doğal dil Çözümleyicileriveya daha karmaşık desenler için özel bir çözümleyici içerir. Daha fazla bilgi için bkz. kısmi terimler, desenler ve özel karakterler.
Aşağıdaki örnek, bir karakterin ters eğik çizgiyle nasıl atlamaya ilişkin bir örnek gösterir:
{
"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şleme için REST API gönderilen JSON şöyle görünür:
{
"format":"solr",
"synonyms": "WA\\, USA, WA, Washington"
}
eş anlamlı haritaları Upload ve yönetme
Daha önce belirtildiği gibi, sorgu ve dizin oluşturma iş yüklerini bozmadan bir eş anlamlı eşleme oluşturabilir veya güncelleyebilirsiniz. Eş anlamlı eşleme, tek başına bir nesnedir (dizinler veya veri kaynakları gibi) ve hiçbir alan kullanıldığı sürece güncelleştirmeler dizin oluşturma veya sorguların başarısız olmasına neden olmaz. Bununla birlikte, bir alan tanımına bir eş anlamlı eşleme eklediğinizde, bir eş anlamlı eşlemeyi silerseniz, söz konusu alanları içeren herhangi bir sorgu 404 hatasıyla başarısız olur.
Bir eş anlamlı eşleme oluşturmak, güncelleştirmek ve silmek her zaman bir tam belge işlemidir. Bu, eş anlamlı haritanın parçalarını artımlı olarak güncelleştiremeyeceği veya silemeyabilmeniz anlamına gelir. Tek bir kuralın güncelleştirilmesi, yeniden yükleme gerektirir.
Alanlara eşanlamlı atama
Bir eş anlamlı eşlemeyi karşıya yükledikten sonra, türündeki alanlarda Edm.String veya bulunan alanlarda eş anlamlıları etkinleştirebilirsiniz Collection(Edm.String) "searchable":true . Belirtildiği gibi, bir alan tanımı yalnızca bir eş anlamlı eşleme 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 sorgula
Eş anlamlıları eklemek, sorgu oluşturma konusunda yeni gereksinimler uygulamaz. Eş anlamlıların eklenmasından önce yaptığınız gibi terim ve tümcecik sorguları da verebilirsiniz. Tek fark, eş anlamlı eşlemede bir sorgu terimi mevcutsa, kurala bağlı olarak, sorgu altyapısının terimi veya tümceciği genişlettireceği veya yeniden yazacaktır.
Sorgu yürütme sırasında eş anlamlılar nasıl kullanılır
Eş anlamlılar, eşdeğer koşullara sahip bir dizinin içeriğini tamamlayan bir sorgu genişletme tekniğidir, ancak yalnızca bir eşanlamlı ataması olan alanlar için. Alan kapsamlı bir sorgu, eş anlamlı bir alanı dışlayıp , eş anlamlı eşlemesinden eşleşme görmezsiniz.
Eş anlamlı etkin alanlar için, eş anlamlılar ilişkili alanla aynı metin analizine tabidir. Örneğin, bir alan standart Lucene çözümleyici kullanılarak çözümlenmekte ise, eş anlamlı terimler sorgu zamanında standart Lucene Çözümleyicisi 'ne de tabi olur. Nokta veya tire gibi noktalama işaretlerini korumak istiyorsanız, eş anlamlı terimi alanında bir içerik koruma Çözümleyicisi uygulayın.
Dahili olarak, eş anlamlılar özelliği, veya işleciyle eş anlamlılarla orijinal sorguyu yeniden yazar. Bu nedenle, isabet vurgulama ve Puanlama profillerinin özgün terim ve eş anlamlıları eşdeğer olarak kabul eder.
Eş anlamlılar yalnızca ücretsiz form metin sorgularını uygular ve filtreler, modeller, otomatik tamamlama veya öneriler için desteklenmez. Otomatik tamamlama ve öneriler yalnızca özgün terime dayalıdır; eş anlamlı eşleşmeler yanıtta görünmez.
Joker karakter arama terimleri için eş anlamlı genişletmeleri uygulanmaz; ön ek, belirsiz ve Regex terimleri genişletilmedi.
Eş anlamlı genişletme ve joker karakter, Regex veya benzer aramalar uygulayan tek bir sorgu yapmanız gerekiyorsa, veya 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 olur <query> | <query>* .
Geliştirme (üretim dışı) ortamında var olan bir dizininiz varsa, eş anlamlılar eklemenin, arama deneyimini nasıl değiştirdiğinden, Puanlama profilleri, isabet vurgulama ve öneriler de dahil olmak üzere küçük bir sözlükten deneyin.