Azure Bilişsel Arama'de sorgulama

Azure Bilişsel Arama, ücretsiz metin aramadan yüksek oranda belirtilen sorgu desenlere kadar çok çeşitli senaryoları desteklemek için zengin bir sorgu dili sunar. Bu makalede sorgu istekleri ve ne tür sorgular oluşturabilirsiniz açıklanmıştır.

Bilişsel Arama'da sorgu, gidiş dönüş işlemi için tam bir belirtimdir ve hem sorgu yürütmeyi bilgilendiren hem de yanıtın geri geldiğini search şekillendiren parametrelere sahip olur. Parametreler ve ayrıştırıcılar sorgu isteğinin türünü belirler. Aşağıdaki sorgu örneği, hotels-sample-index belgeleri koleksiyonunu hedef alan Arama Belgeleri (REST API)kullanarak boole işlecine sahip bir serbest 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 şunlardır:

  • queryType , varsayılan basit sorgu ayrıştırıcı (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ı olan ayrıştırıcıyı ayarlar.

  • searchMode eşleşmelerin ifadede "tüm" ölçütlere mi yoksa "herhangi bir" ölçüte mi bağlı olduğunu belirtir. Varsayılan değer herhangi bir değerdir.

  • search , işleçleri olan veya olmayan eşleşme ölçütlerini (genellikle tam terimler veya tümcecikler) sağlar. Dizin şemasında aranabilir olarak öznitelikli herhangi bir alan bu parametre için bir adaydır.

  • searchFields , sorgu yürütmeyi belirli aranabilir alanlara kısıtlar. Geliştirme sırasında, seçme ve arama için aynı alan listesini kullanmak yararlı olur. Aksi takdirde eşleşme, sonuçlarda göre olmadığınız alan değerlerini temel alarak belgenin neden döndürüldüyle ilgili belirsizliklere neden olabilir.

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

  • select yanıtta hangi alanların geri dönlr olduğunu belirtir. Yalnızca dizinde alınabilir olarak işaretlenmiş alanlar bir select deyiminde kullanılabilir.

  • top belirtilen en iyi eşleşen belge sayısını döndürür. Bu örnekte yalnızca 10 isabet döndürülür. Sonuçları sayfalara almak için üst kısmı kullanabilir ve atlayabilirsiniz (gösterilmez).

  • count , tüm dizinde toplam kaç belge eşleşmesi olduğunu ve döndürülen belgelerden daha fazlasının olduğunu söyler.

  • orderby , sonuçları derecelendirme veya konum gibi bir değere göre sıralamak için kullanılır. Aksi takdirde, sonuçları sıralamak için ilgi puanı varsayılan olarak kullanılır. Bu parametre için bir aday olması için bir alanın sıralanabilir olarak öznitelikle belirtilebilir olması gerekir.

Yukarıdaki liste temsilidir ancak kapsamlı değildir. Sorgu isteğinde parametrelerin tam listesi için bkz. Belgeleri Arama (REST API).

Sorgu türleri

Birkaç önemli özel durumla, bir sorgu isteği hızlı taramalar için yapılandırılmış ters dizinler üzerinde tekrarlar ve herhangi bir arama belgesi içinde herhangi bir alanda eşleşme bulunabilir. Bilişsel Arama'da eşleşmeleri bulmanın birincil yöntemi tam metin araması veya filtrelerdir, ancak otomatik tamamlama veya coğrafi konum araması gibi diğer iyi bilinen arama deneyimlerini de gerçekleştirebilirsiniz. Bu makalenin geri kalanında Bilişsel Arama'daki sorgular özetlenerek daha fazla bilgi ve örnek bağlantısı verilmiştir.

Arama uygulamanız terim girişlerini toplayan bir arama kutusu içerirse büyük olasılıkla tam metin araması bu deneyimin desteklemektedir. Tam metin araması, dizininizin tüm aranabilir alanlarında bir parametrede search geçirilen terimleri veya tümcecikleri kabul eder. Sorgu dizesinde isteğe bağlı boole işleçleri dahil etme veya dışlama ölçütlerini belirtebilirsiniz. Hem basit ayrıştırıcı hem de tam ayrıştırıcı tam metin arama desteği sağlar.

Bilişsel Arama'da tam metin araması Apache Lucene sorgu altyapısı üzerinde geliştirilmiştir. Tam metin aramalarında sorgu dizeleri, taramaları daha verimli hale getirirken sözcük analizine tabi olur. Analiz, tüm terimlerin küçük harf kullanımını, "the" gibi durdurma sözcüklerini kaldırmayı ve terimleri ilkel kök formlara azaltmayı içerir. Varsayılan çözümleyici Standart Lucene'dir.

Eşleşen terimler bulunurken sorgu altyapısı, alan değerlerini bir araya getirerek belge anahtarını veya kimliğini kullanarak eşleştirmeyi içeren bir arama belgesini yeniden oluşturur, belgeleri ilgi düzeyine göre sıralar ve belirttiyebilirsinizse yanıtta ilk 50'den (varsayılan olarak) veya farklı bir sayı top döndürür.

Tam metin araması gerçekleştirecek olursanız, içeriğinizin nasıl belirteçlere alındığını anlamak tüm sorgu anomalileri için hata ayıklamanıza yardımcı olur. Kısa çizgili dizeler veya özel karakterler üzerinde yapılan sorgular, dizinin doğru belirteçleri içerdiğinden emin olmak için varsayılan standart Lucene dışında bir çözümleyiciyi kullanmayı gerekli hale getirmiştir. Dil çözümleyicileri veya sözcük analizini değiştiren özelleştirilmiş çözümleyiciler ile varsayılanı geçersiz kılarak. Bir alanın içeriğinin tamamını tek bir belirteç olarak kabul edecek anahtar sözcük bir örnektir. Bu, posta kodları, kimlikler ve bazı ürün adları gibi veriler için kullanışlıdır. Daha fazla bilgi için bkz. Kısmi terim araması ve özel karakterler içeren desenler.

Büyük metin blokları (içerik alanı veya uzun açıklamalar) içeren dizinlerde boole işleçlerinin yoğun bir şekilde kullanımını öngörürseniz, bu ayarın boole araması üzerindeki etkisini değerlendirmek için sorgularını parametresiyle test etmek için emin searchMode=Any|All olun.

Otomatik tamamlama ve önerilen sorgular

Otomatik tamamlama veya önerilen sonuçlar, bir tür olarak arama deneyiminde kısmi dize girişlerine (her karakterden sonra) göre birbirini takip alan sorgu isteklerinin search alternatifleridir. ve parametresini bu öğreticide açıklandığı gibi birlikte veya ayrı olarak autocomplete suggestions kullanabilirsiniz,ancak bunları ile birlikte search kullanılamaz. Tamamlanan terimler ve önerilen sorgular dizin içeriklerinden türetildi. Altyapı hiçbir zaman dizininiz içinde mevcut olmayan bir dize veya öneri döndürür. Daha fazla bilgi için bkz. Otomatik Tamamlama (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ı tarafından yönlendiren filtreleme için bağlantı gezinti yapılarında facet olarak görselleştirilmiştir. Filtreler, dizinlenmiş içerik dilimlerini ortaya çıkarmak için dahili olarak da kullanılır. Örneğin, bir ürün kategorisine filtre kullanarak bir arama sayfası veya dizin hem İngilizce hem de Fransızca alanlar içeriyorsa bir dil başlatabilirsiniz.

Aşağıdaki tabloda açıklandığı gibi, özelleştirilmiş bir sorgu formunu çağırmak için filtrelere de ihtiyacınız olabilir. Belirtilmeyen arama ( ) ile veya terimler, tümcecikler, işleçler ve desenler içeren bir sorgu dizesiyle filtre search=* kullanabilirsiniz.

Filtre senaryosu Description
Aralık filtreleri Bu Azure Bilişsel Arama filtre parametresi kullanılarak aralık sorguları yerleşiktir. Daha fazla bilgi ve örnekler için bkz. Aralık filtresi örneği.
Coğrafi konum araması Aranabilir bir alan Edm.GeographyPointtüründe ise , "yakınımda bul" veya harita tabanlı arama denetimleri için bir filtre ifadesi oluşturabilirsiniz. Coğrafi arama özelliğine yol alan alanlar koordinatlar içerir. Daha fazla bilgi ve örnek için bkz. Coğrafi arama örneği.
Çok yönlü gezinme Çok yönlü gezinti ağacında kullanıcılar, her tıklamada sonuçları daraltarak facet'leri seçerek kullanabilir. Her bir facet, ölçütlere artık uygun olan belgeleri dışlamak için bir filtre ile de desteklenmiş olur.

Not

Filtre ifadesinde kullanılan metin, sorgu işleme sırasında analizlanmaz. Metin girişinin, eşleşmede başarılı veya başarısız olan büyük/küçük harfe duyarlı bir karakter deseni olduğu varsayılır. Filtre ifadeleri OData söz dizimi kullanılarak oluşturulur ve dizininizin tüm filter filtrelenebilir alanlarında bir parametreye geçirilebilir. Daha fazla bilgi için bkz. Azure Bilişsel Arama.

Belgeye göz at

Daha önce açıklanan sorgu formlarının aksine, bu belge kimliğine göre tek bir arama belgesi ve karşılık gelen dizin araması veya taraması olmayan bir belgeyi almaktadır. Yalnızca bir belge isten ve döndürülür. Kullanıcı arama sonuçlarında bir öğe seçerken belgeyi almak ve ayrıntılar sayfasını alanlarla doldurmak tipik bir yanıttır ve belge arama bunu destekleyen işlemdir.

Gelişmiş arama: belirsiz, joker karakter, yakınlık, regex

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

Sorgu türü Kullanım Örnekler ve daha fazla bilgi
Alanlı arama search Parametre queryType=full Tek bir alanı hedef alan bileşik sorgu ifadesi oluşturun.
Alanlı arama örneği
belirsiz arama search Parametre queryType=full Benzer bir yapıya veya yazıma sahip terimler ile eşler.
Belirsiz arama örneği
yakınlık araması search Parametre queryType=full Bir belgede birbirine yakın olan terimleri bulur.
Yakınlık araması örneği
terim artırma search Parametre queryType=full Bir belgeyi, artırma terimini içeriyorsa, diğer belgeye göre daha yüksek dereceler.
Terim artırma örneği
normal ifade arama search Parametre queryType=full Normal ifadenin içeriğine göre eşler.
Normal ifade örneği
joker karakter veya ön ek arama search * veya ~ ? ile parametresi queryType=full Bir ön eke ve tilde ( ) veya ~ tek bir karaktere ( ) göre eşler. ?
Joker karakter arama örneği

Sonraki adımlar

Sorgu uygulamasına daha yakından bakmak için her söz dizimi için örnekleri gözden geçirebilirsiniz. Tam metin arama özelliğine yeniyebilirsiniz. Sorgu altyapısının ne yaptığına daha yakından bakmak da aynı derecede iyi bir seçenek olabilir.