Azure Bilişsel Arama sorgulama

Azure Bilişsel Arama, ücretsiz metin aramasından yüksek düzeyde belirtilen sorgu desenlerine kadar çok sayıda senaryoyu desteklemek için zengin bir sorgu dili sunar. Bu makalede sorgu istekleri ve oluşturabileceğiniz sorgu türleri açıklanmaktadır.

Bilişsel Arama bir sorgu, search her ikisinin de sorgu yürütmesini bilgilendirmesini ve yanıtı şekillendirip geri geldiğini bildiren bir gidiş dönüş işleminin tam belirtimidir. Parametreler ve Çözümleyicileri sorgu isteği türünü tespit. Aşağıdaki sorgu örneği,, otel-örnek-dizin belgeleri koleksiyonunu hedefleyen arama belgelerini (REST API)kullanarak Boole operatörü olan bir boş metin sorgusudur.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30
{
    "queryType": "simple",
    "searchMode": "all",
    "search": "restaurant +view",
    "searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "top": "10",
    "count": "true",
    "orderby": "Rating desc"
}

Sorgu yürütme sırasında kullanılan parametreler şunları içerir:

  • queryTypequeryType (tam metin araması için en uygun) veya normal ifadeler, yakınlık araması, belirsiz ve joker karakter arama gibi gelişmiş sorgu yapıları için kullanılan tam Lucene sorgu ayrıştırıcısının , birkaç kez ad vermek üzere Ayrıştırıcıyı ayarlar.

  • searchMode eşleşmelerin ifadede "All" kriterine mi yoksa "Any" ölçütlerine göre mi olduğunu belirtir. Varsayılan değer.

  • search eşleştirme ölçütünü, genellikle tüm terimleri veya tümceleri, işleçlere sahip veya olmayan bir şekilde sağlar. Dizin şemasında aranabilir olarak öznitelikli tüm alanlar, bu parametre için bir adaydır.

  • searchFields sorgu yürütmesini belirli aranabilir alanlarla kısıtlar. Geliştirme sırasında, seçme ve arama için aynı alan listesinin kullanılması yararlı olur. Aksi takdirde, bir eşleşme, sonuçların neden döndürüldüğünden emin olmak için sonuçlarda görmediğiniz alan değerlerine dayalı olabilir.

Yanıtı şekillendirmek için kullanılan parametreler:

  • select yanıtta döndürülecek alanları belirtir. Yalnızca dizinde alınabilir olarak işaretlenen alanlar, Select ifadesinde kullanılabilir.

  • top belirtilen en iyi eşleşen belge sayısını döndürür. Bu örnekte, yalnızca 10 isabetler döndürülür. Sonuçları göstermek için top ve Skip (gösterilmez) ' i kullanabilirsiniz.

  • count Tüm dizindeki birçok belge, döndürülenden daha fazla olabilecek şekilde tamamen eşleşir.

  • orderby sonuçları derecelendirme veya konum gibi bir değere göre sıralamak istiyorsanız kullanılır. Aksi takdirde, varsayılan değer, sonuçları derecelendirmek için yakınlık puanı kullanmaktır. Bu parametre için bir aday olması için bir alanın sıralanabilir olması gerekir.

Yukarıdaki liste temsilcisidir ancak ayrıntılı değildir. Bir sorgu isteğindeki parametrelerin tam listesi için bkz. arama belgeleri (REST API).

Sorgu türleri

Birkaç önemli özel durumu ile, bir sorgu isteği, her türlü arama belgesi içinde potansiyel olarak herhangi bir alanda bulunabilecek hızlı taramalar için yapılandırılmış ters dizinler üzerinde yinelenir. Bilişsel Arama, eşleşmeleri bulmaya yönelik birincil metodoloji tam metin arama veya filtreleridir, ancak otomatik tamamlama veya coğrafi konum arama gibi iyi bilinen diğer arama deneyimlerini de uygulayabilirsiniz. Bu makalenin geri kalanı Bilişsel Arama sorguları özetler ve daha fazla bilgi ve örnek için bağlantılar sağlar.

Arama uygulamanız, terim girişlerini toplayan bir arama kutusu içeriyorsa, tam metin araması büyük olasılıkla bu deneyimi yedekleyen sorgu işlemidir. Tam metin arama, search dizininizdeki tüm search alanlardaki bir parametreye geçirilen terimleri veya tümceleri kabul eder. Sorgu dizesindeki isteğe bağlı Boolean işleçleri içerme veya dışlama ölçütlerini belirtebilir. Hem basit ayrıştırıcı hem de tam Ayrıştırıcı tam metin aramasını destekler.

Bilişsel Arama, tam metin araması Apache Lucene sorgu altyapısında oluşturulmuştur. Tam metin aramasında sorgu dizeleri, taramaları daha verimli hale getirmek için sözlü Analize sahiptir. Analiz, tüm terimleri azaltır, "The" gibi durdurma sözcüklerini kaldırır ve temel kök formlara yönelik terimleri azaltır. Varsayılan çözümleyici standart Lucene ' dir.

Eşleşen terimler bulunduğunda sorgu altyapısı, alan değerlerini birleştirmek için belge anahtarını veya KIMLIĞINI kullanarak eşleştirmeyi içeren bir arama belgesi reconstitutes, belgeleri ilgi sırasına göre derecelendirir ve belirtilmişse en üstteki 50 (varsayılan olarak) değerini döndürür top .

Tam metin araması gerçekleştiriyorsanız, içeriğinizin nasıl simgeleştirilmiş olduğunu anlamak, tüm sorgu anormallarını hata ayıklamanıza yardımcı olur. Hecelenmiş dizeler veya özel karakterler üzerinde sorgular, dizinin doğru belirteçleri içerdiğinden emin olmak için varsayılan standart Lucene dışında bir çözümleyici kullanmayı gerekli olabilir. Varsayılan ayarı, dil Çözümleyicileri veya sözcük temelli analizleri değiştiren özelleştirilmiş çözümleyiciler ile geçersiz kılabilirsiniz. Bir örnek, bir alanın tüm içeriğini tek bir belirteç olarak ele alan anahtar sözcüktür . Bu, ZIP kodları, kimlikler ve bazı ürün adları gibi veriler için yararlıdır. Daha fazla bilgi için bkz. özel karakterlerle kısmi terim arama ve desenleri.

Büyük metin blokları (bir içerik alanı veya uzun açıklamalar) içeren dizinlerde daha büyük olasılıkla, Boolean operatörlerinin ağır kullanımını düşünüyorsanız, searchMode=Any|All Bu ayarın Boole aramasında etkisini değerlendirmek için sorguları parametresiyle test ettiğinizden emin olun.

Otomatik tamamlama ve önerilen sorgular

Otomatik tamamlama veya önerilen sonuçlar , bir arama türü deneyimindeki kısmi dize girdilerine (her bir karakterden sonra) göre art arda yapılan sorgu isteklerinin tetikleneceği alternatiflerdir. autocompletesuggestionsautocompleteaçıklandığı gibi, ve parametresini birlikte veya ayrı ayrı kullanabilirsiniz, ancak ile kullanamazsınız search . Hem tamamlanan terimler hem de önerilen sorgular, Dizin içeriğinden türetilir. Motor, dizininizdeki mevcut olmayan bir dizeyi veya öneriyi hiçbir şekilde döndürmez. Daha fazla bilgi için bkz. AutoComplete (REST API) ve öneriler (REST API).

Filtreler Bilişsel Arama içeren uygulamalarda yaygın olarak kullanılır. Uygulama sayfalarında, filtreler genellikle kullanıcı tabanlı filtreleme için bağlantı gezinti yapılarında modeller olarak görselleştirilir. Filtreler, dizinlenmiş içeriğin dilimlerini göstermek için dahili olarak da kullanılır. Örneğin, bir ürün kategorisinde filtre kullanarak bir arama sayfası başlatabilir veya bir dizinde hem Ingilizce hem de Fransızca alanları varsa bir dil kullanabilirsiniz.

Ayrıca, aşağıdaki tabloda açıklandığı gibi özelleştirilmiş bir sorgu formunu çağırmak için filtreler de gerekebilir. Belirtilmemiş bir aramayla ( search=* ) veya terimleri, tümceleri, işleçleri ve desenleri içeren bir sorgu dizesiyle bir filtre kullanabilirsiniz.

Filtre senaryosu Açıklama
Aralık filtreleri Azure Bilişsel Arama 'de, Aralık sorguları filtre parametresi kullanılarak oluşturulur. Daha fazla bilgi ve örnek için bkz. Aralık filtresi örneği.
Coğrafi konum arama Aranabilir bir alan Edm. Geographyıpoint türündeise, "yakın beni bul" veya harita tabanlı arama denetimleri için bir filtre ifadesi oluşturabilirsiniz. Coğrafi arama 'nın bulunduğu alanlar koordinatları içerir. Daha fazla bilgi ve örnek için bkz. coğrafi arama örneği.
Çok yönlü gezinme Kullanıcılar, çok yönlü gezinti ağacında, her tıklamayla sonuçları daraltmak için modelleri seçebilir. Her bir model, artık ölçütlerle eşleşmeyen belgeleri dışlayan bir filtreyle desteklenir.

Not

Filtre ifadesinde kullanılan metin, sorgu işleme sırasında çözümlenmez. Metin girişi, eşleşme üzerinde başarılı veya başarısız olan, büyük/küçük harfe duyarlı bir karakter deseninin olduğu varsayılır. Filtre ifadeleri OData sözdizimi kullanılarak oluşturulur ve dizininizdeki tüm filtrelenebilir alanlara bir parametreye geçirilir. Daha fazla bilgi için bkz. Azure bilişsel arama filtreler.

Belge arama

Daha önce açıklanan sorgu formlarının aksine, bu, karşılık gelen dizin arama veya tarama olmadan tek bir arama BELGESINI kimliğe görealır. Yalnızca bir belge istenir ve döndürülür. Bir Kullanıcı arama sonuçlarında bir öğe seçtiğinde, belgeyi almak ve bir ayrıntı sayfasını alanlarla doldurmak tipik bir yanıt olur ve bir belge görünümü onu destekleyen bir işlemdir.

Gelişmiş arama: benzer, joker karakter, yakınlık, Regex

Gelişmiş sorgu formu, belirli bir sorgu davranışını tetikleyen tam Lucene ayrıştırıcısına ve işleçlere bağlıdır.

Sorgu türü Kullanım Örnekler ve daha fazla bilgi
Parçalı arama search parametresinin queryType=full Tek bir alanı hedefleyen bir bileşik sorgu ifadesi oluşturun.
Parçalı arama örneği
benzer arama search parametresinin queryType=full Benzer bir yapım veya yazım denetimi olan koşullara göre eşleşir.
Benzer arama örneği
yakınlık araması search parametresinin queryType=full Belgedeki birbirini yakın terimleri bulur.
Yakınlık arama örneği
terim artırma search parametresinin queryType=full Bir belgeyi, daha fazla olmayan diğerlerine göre, daha yüksek bir dönem içeriyorsa, daha yüksek bir şekilde derecelendirir.
Terim artırma örneği
normal ifade arama search parametresinin queryType=full Normal bir ifadenin içeriğine göre eşleşir.
Normal ifade örneği
joker karakter veya ön ek arama search* veya içeren ~ parametre ?queryType=full Bir önek ve tilde ( ~ ) veya tek karakter () temelinde eşleşir ? .
Joker karakter arama örneği

Sonraki adımlar

Sorgu uygulamasına daha yakından bakmak için, her bir sözdizimi için örnekleri gözden geçirin. Tam metin arama için yeni olduğunuzda, sorgu altyapısının eşit derecede iyi bir seçim yapabileceğini daha yakından inceleyelim.