Bir öneriyi otomatik tamamlama ve sorgudaki öneriler için yapılandırma
Azure AI Search'te bir öneri oluşturucu kullanılarak typeahead veya "search-as-you-type" etkinleştirilir. Öneride bulunan, otomatik tamamlama ve önerilen eşleşmeleri doldurmak için hangi alanların kullanılacağını belirten bir dizin yapılandırmasıdır. Bu alanlar, kısmi terimlerle eşleşmeleri desteklemek için ön ek dizileri oluşturarak ek belirteçlemeden geçer. Örneğin, Seattle değeri olan bir city
alan içeren bir önericisi, tür başlığını desteklemek için deniz, koltuk, koltuk ve seattl ön ek birleşimlerine sahiptir.
Kısmi terimlerde eşleşmeler otomatik olarak tamamlanmış bir sorgu veya önerilen bir eşleşme olabilir. Aynı öneri oluşturucu her iki deneyimi de destekler.
Azure AI Search'te tür başlığı deneyimleri
Typeahead, tüm terim sorgusu için kısmi girişi tamamlayan otomatik tamamlama özelliğini veya belirli bir eşleşmeye tıklamayı davet eden önerileri kullanabilir. Otomatik tamamlama bir sorgu oluşturur. Öneriler, eşleşen bir belge oluşturur.
Aşağıdaki ekran görüntüsünde her ikisi de gösterilmektedir. Otomatik tamamlama, olası bir terimi tahmin eder ve tw değerini ile tamamlar. Öneriler, gibi hotel name
bir alanın dizinden eşleşen bir otel arama belgesini temsil ettiği mini arama sonuçlarıdır. Öneriler için açıklayıcı bilgiler sağlayan herhangi bir alanı ortaya çıkarabilirsiniz.
Bu özellikleri ayrı ayrı veya birlikte kullanabilirsiniz. Azure AI Search'te bu davranışları uygulamak için bir dizin ve sorgu bileşeni vardır.
Arama dizini tanımına bir önericisi ekleyin. Bu makalenin geri kalanında bir önerici oluşturmaya odaklanmaktadır.
Öneri oluşturucu kullanma bölümünde listelenen API'lerden birini kullanarak öneri isteği veya otomatik tamamlama isteği biçiminde öneride bulunan bir sorguyu çağırın.
Tür olarak ara, dize alanları için alan başına temelinde etkinleştirilir. Ekran görüntüsünde belirtilene benzer bir deneyim istiyorsanız, aynı arama çözümünde her iki tür başlığı davranışını da uygulayabilirsiniz. Her iki istek de belirli bir dizinin belge koleksiyonunu hedefler ve bir kullanıcı en az üç karakterli bir giriş dizesi sağladıktan sonra yanıtlar döndürülür.
Öneri oluşturucu oluşturma
Öneri oluşturucu oluşturmak için dizin tanımına bir öneri ekleyin. Öneride bulunan bir ad ve tür başlığı deneyiminin etkinleştirildiği bir alan koleksiyonu alır. Öneri oluşturucu oluşturmak için en iyi zaman, bunu kullanan alanı da tanımladığınız zamandır.
Yalnızca dize alanlarını kullanın.
Dize alanı karmaşık bir türün parçasıysa (örneğin, Adres içindeki bir Şehir alanı), alan yoluna üst öğeyi ekleyin:
"Address/City"
(REST, C#ve Python) veya["Address"]["City"]
(JavaScript).Alanda varsayılan standart Lucene çözümleyicisini (
"analyzer": null
) veya dil çözümleyicisini (örneğin,"analyzer": "en.Microsoft"
) kullanın.
Önceden var olan alanları kullanarak bir öneri oluşturucu oluşturmaya çalışırsanız, API buna izin vermemektedir. İki veya daha fazla karakter bileşimindeki kısmi terimler tüm terimlerle birlikte belirteç haline getirildiğinde, dizin oluşturma sırasında önekler oluşturulur. Mevcut alanların zaten belirteç haline getirildiği göz önünde bulundurulduğunda, bir önericiye eklemek istiyorsanız dizini yeniden oluşturmanız gerekir. Daha fazla bilgi için bkz . Azure AI Search'te dizini güncelleştirme veya yeniden derleme.
Alanları seçin
Bir öneri oluşturucunun çeşitli özellikleri olsa da, öncelikle bir tür olarak arama deneyimini etkinleştirdiğiniz bir dize alanları koleksiyonu. Her dizin için bir öneri aracı olduğundan, öneri listesi hem öneriler hem de otomatik tamamlama için içerik katkıda bulunan tüm alanları içermelidir.
Ek içerik daha fazla terim tamamlama potansiyeline sahip olduğundan, otomatik tamamlama, daha büyük bir alan havuzundan yararlanır.
Diğer taraftan öneriler, alan seçiminiz seçmeli olduğunda daha iyi sonuçlar üretir. Önerinin bir arama belgesi için ara sunucu olduğunu unutmayın, bu nedenle tek bir sonucu en iyi temsil eden alanları seçin. Birden çok eşleşmeyi ayırt eden adlar, başlıklar veya diğer benzersiz alanlar en iyi şekilde çalışır. Alanlar yinelenen değerlerden oluşuyorsa, öneriler aynı sonuçlardan oluşur ve kullanıcı hangisini seçeceğini bilemez.
Her iki tür olarak arama deneyimini de karşılamak için, otomatik tamamlama için ihtiyacınız olan tüm alanları ekleyin, sonra önerilerin sonuçlarını denetlemek için , top
, filter
ve searchFields
kullanınselect
.
Çözümleyicileri seçme
Çözümleyici seçiminiz, alanların nasıl belirteç haline getirileceğini ve ön eklendiğini belirler. Örneğin, bağlama duyarlı gibi kısa çizgili bir dize için dil çözümleyicisi kullanıldığında şu belirteç bileşimleri elde edilir: bağlam, hassas, bağlama duyarlı. Standart Lucene çözümleyicisini kullansaydınız, kısa çizgili dize mevcut olmazdı.
Çözümleyicileri değerlendirirken terimlerin nasıl işlendiğine ilişkin içgörüler için Metin Analizi API'sini kullanmayı göz önünde bulundurun. Bir dizin derledikten sonra, belirteç çıkışını görüntülemek için bir dizedeki çeşitli çözümleyicileri deneyebilirsiniz.
Kötü sonuçları önlemek için özel çözümleyiciler veya yerleşik çözümleyiciler kullanan alanlara (standart Lucene hariç) açıkça izin verilmez.
Not
Çözümleyici kısıtlamasını geçici olarak düzeltmeniz gerekiyorsa, örneğin belirli sorgu senaryoları için bir anahtar sözcük veya ngram çözümleyicisi gerekiyorsa, aynı içerik için iki ayrı alan kullanmanız gerekir. Bu, alanlardan birinin bir öneri oluşturucuya sahip olmasını sağlarken, diğeri özel çözümleyici yapılandırmasıyla ayarlanabilir.
Azure portalını kullanarak oluşturma
Dizin Oluşturmak için Dizin Ekle'yi veya Verileri içeri aktarma sihirbazını kullanırken, bir öneride bulunanı etkinleştirme seçeneğiniz vardır:
Dizin tanımında, önericisi için bir ad girin.
Yeni alanlar için her alan tanımında , Önericisi sütununda bir onay kutusu seçin. Yalnızca dize alanlarında bir onay kutusu kullanılabilir.
Daha önce belirtildiği gibi, çözümleyici seçimi belirteçleştirmeyi ve ön eki eklemeyi etkiler. Önericileri etkinleştirirken alan tanımının tamamını göz önünde bulundurun.
REST kullanarak oluşturma
REST API'de Dizin Oluştur veya Dizini Güncelleştir'i kullanarak öneride bulunanlar ekleyin.
{
"name": "hotels-sample-index",
"fields": [
. . .
{
"name": "HotelName",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"key": false,
"retrievable": true,
"searchable": true,
"sortable": false,
"analyzer": "en.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null,
"synonymMaps": [],
"fields": []
},
],
"suggesters": [
{
"name": "sg",
"searchMode": "analyzingInfixMatching",
"sourceFields": ["HotelName"]
}
],
"scoringProfiles": [
. . .
]
}
.NET kullanarak oluşturma
C# dilinde searchSuggester nesnesi tanımlayın. Suggesters
SearchIndex nesnesi üzerindeki bir koleksiyondur, ancak yalnızca bir öğe alabilir. Dizin tanımına bir önericisi ekleyin.
private static void CreateIndex(string indexName, SearchIndexClient indexClient)
{
FieldBuilder fieldBuilder = new FieldBuilder();
var searchFields = fieldBuilder.Build(typeof(Hotel));
var definition = new SearchIndex(indexName, searchFields);
var suggester = new SearchSuggester("sg", new[] { "HotelName", "Category", "Address/City", "Address/StateProvince" });
definition.Suggesters.Add(suggester);
indexClient.CreateOrUpdateIndex(definition);
}
Özellik başvurusu
Öneri oluşturucu kullanma
Bir sorguda bir önericisi kullanılır. Bir öneri oluşturucu oluşturulduktan sonra, yazarken arama deneyimi için aşağıdaki API'lerden birini çağırın:
Bir arama uygulamasında istemci kodu, kısmi sorguyu toplamak ve eşleşmeyi sağlamak için jQuery UI Otomatik Tamamlama gibi bir kitaplık kullanmalıdır. Bu görev hakkında daha fazla bilgi için bkz . İstemci koduna otomatik tamamlama veya önerilen sonuçlar ekleme.
API kullanımı, aşağıdaki Otomatik Tamamlama REST API çağrısında gösterilmiştir. Bu örnekten iki farklı seçenek vardır. İlk olarak, tüm sorgularda olduğu gibi, işlem bir dizinin belge koleksiyonuna karşıdır ve sorgu, bu durumda kısmi sorgu sağlayan bir search
parametre içerir. İkincisi, isteğe eklemeniz suggesterName
gerekir. Bir öneri oluşturucu dizinde tanımlanmamışsa, otomatik tamamlama çağrıları veya öneriler başarısız olur.
POST /indexes/myxboxgames/docs/autocomplete?search&api-version=2024-07-01
{
"search": "minecraf",
"suggesterName": "sg"
}
Örnek kod
İstemci uygulamasında kısmi terim tamamlama için açık kaynak Önerileri paketini kullanmayı öğrenmek için bkz. .NET arama kodunu keşfetme.
Sonraki adım
İstek formülasyonu hakkında daha fazla bilgi edinin.