Azure AI Search'te OData tam metin arama işlevleri - search.ismatch
ve search.ismatchscoring
Azure AI Search, ve search.ismatchscoring
işlevleri aracılığıyla search.ismatch
OData filtre ifadeleri bağlamında tam metin aramayı destekler. Bu işlevler, tam metin aramasını katı Boole filtrelemesi ile yalnızca Arama API'sinin en üst düzey search
parametresini kullanarak mümkün olmayan yollarla birleştirmenizi sağlar.
Dekont
search.ismatch
ve search.ismatchscoring
işlevleri yalnızca Arama API'sindeki filtrelerde desteklenir. Bunlar Öneri veya Otomatik Tamamlama API'lerinde desteklenmez.
Sözdizimi
Aşağıdaki EBNF (Genişletilmiş Backus-Naur Formu) ve search.ismatchscoring
işlevlerinin search.ismatch
dil bilgisini tanımlar:
search_is_match_call ::=
'search.ismatch'('scoring')?'(' search_is_match_parameters ')'
search_is_match_parameters ::=
string_literal(',' string_literal(',' query_type ',' search_mode)?)?
query_type ::= "'full'" | "'simple'"
search_mode ::= "'any'" | "'all'"
Etkileşimli söz dizimi diyagramı da kullanılabilir:
Dekont
EbNF'nin tamamı için bkz . Azure AI Search için OData ifade söz dizimi başvurusu.
search.ismatch
İşlev, search.ismatch
filtre ifadesinin bir parçası olarak tam metin arama sorgusunu değerlendirir. Arama sorgusuyla eşleşen belgeler sonuç kümesinde döndürülür. Bu işlevin aşağıdaki aşırı yüklemeleri kullanılabilir:
search.ismatch(search)
search.ismatch(search, searchFields)
search.ismatch(search, searchFields, queryType, searchMode)
Parametreler aşağıdaki tabloda tanımlanmıştır:
Parametre adı | Türü | Tanım |
---|---|---|
search |
Edm.String |
Arama sorgusu (basit veya tam Lucene sorgu söz diziminde). |
searchFields |
Edm.String |
Aranabilir alanların virgülle ayrılmış listesi; varsayılan olarak dizindeki tüm aranabilir alanları kullanır. Parametresinde search alanlı arama kullanılırken, Lucene sorgusundaki alan tanımlayıcıları bu parametrede belirtilen tüm alanları geçersiz kılar. |
queryType |
Edm.String |
'simple' veya 'full' ; varsayılan olarak öğesini kullanır 'simple' . parametresinde hangi sorgu dilinin search kullanıldığını belirtir. |
searchMode |
Edm.String |
'any' veya 'all' , varsayılan olarak olarak 'any' gösterilir. Belgeyi eşleşme olarak saymak için parametredeki search arama terimlerinden herhangi birinin veya tümünün eşleşmesi gerekip gerekmediğini gösterir. Parametresinde search Lucene Boole işleçlerini kullanırken, bu parametreden önceliklidirler. |
Yukarıdaki parametrelerin tümü, Arama API'sindeki ilgili arama isteği parametrelerine eşdeğerdir.
search.ismatch
İşlev, Boole mantıksal işleçlerini kullanarak diğer filtre alt ifadeleriyle oluşturmanızı sağlayan türünde Edm.Boolean
bir değer döndürür.
Dekont
Azure AI Search, lambda ifadelerinin kullanılmasını veya search.ismatchscoring
içinde kullanılmasını search.ismatch
desteklemez. Bu, tam metin arama eşleşmelerini aynı nesnedeki katı filtre eşleşmeleriyle ilişkilendirebilen nesne koleksiyonları üzerinde filtre yazmanın mümkün olmadığı anlamına gelir. Bu sınırlamayla ilgili diğer ayrıntılar ve örnekler için bkz . Azure AI Search'te koleksiyon filtreleriyle ilgili sorunları giderme. Bu sınırlamanın neden mevcut olduğu hakkında daha ayrıntılı bilgi için bkz . Azure AI Search'te koleksiyon filtrelerini anlama.
search.ismatchscoring
search.ismatchscoring
İşlev, işlevi gibi search.ismatch
parametre olarak geçirilen tam metin arama sorgusuyla eşleşen belgeler için döndürürtrue
. Aralarındaki fark, sorguyla eşleşen search.ismatchscoring
belgelerin ilgi puanının genel belge puanına katkıda bulunacağı, durumunda search.ismatch
ise belge puanının değiştirilmeyeceğidir. Bu işlevin aşağıdaki aşırı yüklemeleri, ile aynı search.ismatch
parametrelerle kullanılabilir:
search.ismatchscoring(search)
search.ismatchscoring(search, searchFields)
search.ismatchscoring(search, searchFields, queryType, searchMode)
search.ismatch
Hem hem de search.ismatchscoring
işlevleri aynı filtre ifadesinde kullanılabilir.
Örnekler
"Waterfront" sözcüğünü içeren belgeleri bulun. Bu filtre sorgusu ile bir arama isteği aynıdır search=waterfront
.
search.ismatchscoring('waterfront')
"Hostel" sözcüğü ve derecelendirmesi 4'e eşit veya daha büyük olan belgeleri veya "motel" sözcüğü ve derecelendirme değeri 5'e eşit olan belgeleri bulun. Bu isteğin işlev olmadan search.ismatchscoring
ifade edilemediğini unutmayın.
search.ismatchscoring('hostel') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 5
"Lüks" sözcüğü olmadan belgeleri bulun.
not search.ismatch('luxury')
"Okyanus görünümü" veya derecelendirme değeri 5'e eşit olan belgeleri bulun. Sorgu search.ismatchscoring
yalnızca ve Rooms/Description
alanlarına HotelName
göre yürütülür.
Ayrıştırma işleminin yalnızca ikinci yan tümcesiyle eşleşen belgeler de döndürülür; 5'e eşit oteller Rating
. Bu belgelerin ifadenin puanlanan bölümlerinden hiçbiriyle eşleşmediğini açıkça belirtecek olursak, sıfıra eşit puanla döndürülürler.
search.ismatchscoring('"ocean view"', 'Rooms/Description,HotelName') or Rating eq 5
Otelin açıklamasında "otel" ve "havaalanı" terimlerinin birbirinden 5 kelime içinde olduğu ve en az bazı odalarda sigara içilmeyen belgeleri bulun. Bu sorgu tam Lucene sorgu dilini kullanır.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Açıklama alanında "lüks" harfleriyle başlayan sözcük içeren belgeleri bulun. Bu sorgu ile search.ismatch
birlikte ön ek araması kullanır.
search.ismatch('lux*', 'Description')
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