Aracılığıyla paylaş


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.Booleanbir 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.ismatchise belge puanının değiştirilmeyeceğidir. Bu işlevin aşağıdaki aşırı yüklemeleri, ile aynı search.ismatchparametrelerle 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/Descriptionalanları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.ismatchbirlikte ön ek araması kullanır.

    search.ismatch('lux*', 'Description')

Sonraki adımlar