Belgeleri Ara (Azure Bilişsel Arama REST API)
Sorgu isteği, arama hizmeti üzerinde tek bir dizinin belge koleksiyonunu hedefler. Eşleşme ölçütlerini tanımlayan parametreleri ve yanıtı şekillendiren parametreleri içerir.
GET veya POST kullanabilirsiniz. SORGU parametreleri, GET istekleri durumunda sorgu dizesinde ve POST istekleri durumunda istek gövdesinde belirtilir.
GET https://[service name].search.windows.net/indexes/[index name]/docs?[query parameters]
Content-Type: application/json
api-key: [admin or query key]
POST https://[service name].search.windows.net/indexes/[index name]/docs/search?api-version=[api-version]
Content-Type: application/json
api-key: [admin or query key]
GET ile çağrıldıklarda, istek URL'sinin uzunluğu 8 KB'yi aşamaz. Bu uzunluk genellikle çoğu uygulama için yeterlidir. Ancak, bazı uygulamalar özellikle OData filtre ifadeleri kullanılırken çok büyük sorgular üretir. BU uygulamalar için HTTP POST, GET'den daha büyük filtrelere izin verir.
POST ile, POST için istek boyutu sınırı yaklaşık 16 MB olduğu için filtrede yer alan yan tümce sayısı ham filtre dizesinin boyutunu değil sınırlayıcı faktördür. POST isteği boyut sınırı çok büyük olsa da filtre ifadeleri rastgele karmaşık olamaz. Filtre karmaşıklığı sınırlamaları hakkında daha fazla bilgi için bkz. OData İfade söz dizimi Azure Bilişsel Arama.
URI Parametreleri
| Parametre | Açıklama |
|---|---|
| [hizmet adı] | Gereklidir. Bunu arama hizmetinizin benzersiz, kullanıcı tanımlı adı olarak ayarlayın. |
| [dizin adı]/docs | Gereklidir. Adlandırılmış bir dizinin belge koleksiyonunu belirtir. |
| [sorgu parametreleri] | Sorgu parametreleri GET istekleri için URI'de ve POST istekleri için istek gövdesinde belirtilir. |
| api-sürümü | Gereklidir. Geçerli kararlı sürüm: api-version=2020-06-30 . Daha fazla sürüm için bkz. API sürümleri. Sorgular için api-version her zaman GET ve POST için bir URI parametresi olarak belirtilir. |
URL kodlama önerileri
GET çağrılarını doğrudan çağıran belirli sorgu parametrelerini URL ile kodlamayı REST API unutmayın. Belge Ara işlemi için url kodlaması aşağıdaki sorgu parametreleri için gerekli olabilir:
- search
- $filter
- facet
- highlightPreTag
- highlightPostTag
URL kodlaması yalnızca tek tek parametreler için önerilir. Sorgu dizesinin tamamını yanlışlıkla URL ile kodlarsanız (sonrasındaki her ? şey) istekler kes.
Ayrıca URL kodlaması yalnızca get kullanarak doğrudan REST API çağrılır. POST kullanırken veya kodlamayı sizin için Azure Bilişsel Arama .NETistemci kitaplığını kullanırken URL kodlaması gerekmez.
İstek Üst Bilgileri
Aşağıdaki tabloda gerekli ve isteğe bağlı istek üst bilgileri açıklanmıştır.
| Alanlar | Açıklama |
|---|---|
| İçerik Türü | Gereklidir. Bunu "application/json" olarak ayarlayın |
| api-key | Gereklidir. Arama hizmetinize yapılan isteğin kimliğini doğrular ve sistem tarafından oluşturulan benzersiz bir dize. Belgeler koleksiyonuna yönelik sorgu istekleri, API anahtarı olarak bir yönetici anahtarı veya sorgu anahtarı belirtebilirsiniz. Sorgu anahtarı, belgeler koleksiyonuna karşı salt okunur işlemler için kullanılır. API anahtarını arama hizmeti panonda, api anahtarını Azure portal. |
İstek Gövdesi
GET için: Yok.
POST için:
{
"count": true | false (default),
"facets": [ "facet_expression_1", "facet_expression_2", ... ],
"filter": "odata_filter_expression",
"highlight": "highlight_field_1, highlight_field_2, ...",
"highlightPreTag": "pre_tag",
"highlightPostTag": "post_tag",
"minimumCoverage": # (% of index that must be covered to declare query successful; default 100),
"orderby": "orderby_expression",
"queryType": "simple" (default) | "full",
"scoringParameters": [ "scoring_parameter_1", "scoring_parameter_2", ... ],
"scoringProfile": "scoring_profile_name",
"scoringStatistics" : "local" | "global",
"search": "simple_query_expression",
"searchFields": "field_name_1, field_name_2, ...",
"searchMode": "any" (default) | "all",
"select": "field_name_1, field_name_2, ...",
"sessionId" : "session_id",
"skip": # (default 0),
"top": #
}
Kısmi Arama Yanıtlarının Devamlılığı
Bazen Azure Bilişsel Arama, istenen tüm sonuçları tek bir Arama yanıtlarında geri getiremz. Bu durum, sorgunun çok fazla belge isteği göndererek çok fazla belge $top veya çok büyük olan $top bir değer belirtme gibi farklı nedenlerle oluşabilir. Böyle durumlarda, Azure Bilişsel Arama ek açıklamasını yanıt gövdesine ve bir POST isteği olup @odata.nextLink @search.nextPageParameters olamayacak şekilde içerecektir. Arama yanıtının sonraki kısmını almak üzere başka bir Arama isteği formüle etmek için bu ek açıklamaların değerlerini kullanabilirsiniz. Buna özgün Arama isteğinin devamlılığı denir ve ek açıklamalar genellikle devamlılık belirteçleri olarak da ifade edilir. Bu ek açıklamaların söz dizimi ve yanıt gövdesinde nerede görünecekleri hakkında ayrıntılı bilgi için aşağıdaki Yanıt örneğine bakın.
Süreklilik belirteçlerini Azure Bilişsel Arama nedenlerinden biri uygulamaya özgü ve değişebilir. Sağlam istemciler, beklenenden daha az belgenin döndürüleceği ve belgeleri almaya devam etmek için bir devamlılık belirtecinin dahil olduğu durumlara her zaman hazır olması gerekir. Ayrıca devam etmek için özgün istekle aynı HTTP yöntemini kullan gerektiğini unutmayın. Örneğin, bir GET isteği gönderdiyebilirsiniz, gönderilen tüm devamlılık istekleri de GET (ve benzer şekilde POST için) kullan gerekir.
Not
ve hizmetinin amacı, hizmeti disk belleği için genel bir mekanizma sağlamak değil çok fazla sonuç isteğine sahip @odata.nextLink @search.nextPageParameters sorgulardan korumaktır. Sonuçları sayfalara almak için $top ve $skip kullanın. Örneğin, 10 boyuta sahip sayfaları görmek için ilk isteğiniz $top=10 ve $skip=0, ikinci istekte $top=1' ve $skip=10, üçüncü istekte $top=10 ve $skip=20 gibi bir değere sahip olması gerekir.
Sorgu Parametreleri
Sorgu, GET ile çağrıldıklarında URL'de çeşitli parametreleri ve POST ile çağrıldıklarında istek gövdesinde JSON özellikleri olarak kabul eder. Bazı parametrelerin söz dizimi GET ile POST arasında biraz farklıdır. Bu farklılıklar aşağıda geçerli olduğu gibi not almaktadır.
| Ad | Tür | Açıklama |
|---|---|---|
| api-sürümü | string | Gereklidir. İstek için REST API dosyanın sürümü. Desteklenen sürümlerin listesi için bkz. API sürümleri. Bu işlem için, GET veya POST ile Arama Belgeleri çağırmadan bağımsız olarak api-version bir URI parametresi olarak belirtilir. |
| $count | boolean | İsteğe bağlı. Geçerli değerler "true" veya "false" değerleridir. Varsayılan olarak "false" değeri kullanılır. POST ile çağrıldıklarda bu parametre, varsayılan değer yerine count $count. Toplam sonuç sayısını getirmenin gerekip gerek olmadığını belirtir. Bu, arama ve $filter parametreleriyle eş $top ve $skip. Bu değeri "true" olarak ayarlama performansı düşürebilir. Döndürülen sayı yaklaşık bir sayıdır. Herhangi bir belge olmadan yalnızca s sayımı almak için $top=0 kullanabilirsiniz. |
| facet | string | İsteğe bağlı. Yüzün görece bir alanı. Dize, virgülle ayrılmış ad-değer çiftleri olarak ifade eden, faceting'i özelleştirmek için parametreler içerebilir. POST ile çağrıldıklarda bu parametre facet yerine facets olarak adlandırılmış olur. Geçerli olan "count", "sort", "values", "interval" ve "timeoffset". "count", en fazla facet terimlerinin sayısıdır; varsayılan değer 10'dır. Terim sayısında üst sınır yoktur, ancak özellikle çok sayıda benzersiz terim içeren çok sayıda alan varsa, yüksek değerler performansı düşürebilir. Örneğin, "facet=category,count:5", facet sonuçlarında ilk beş kategoriyi alır. Count parametresi benzersiz terim sayısından küçükse sonuçlar doğru olmayabilir. Bunun nedeni, yüz yüze sorguların parçalar arasında dağıtılmasıdır. Sayıların artırılması genellikle terim sayılarının doğruluğunu artırır, ancak performansa göre artar. "sort", "count", "-count", "value", "-value" olarak ayarlanmış olabilir. Sayıya göre azalan düzende sıralamak için count kullanın. Sayıya göre artan düzende sıralamak için -count kullanın. Değere göre artan düzende sıralamak için değer kullanın. Değere göre azalan düzende sıralamak için -value kullanın (örneğin, "facet=category,count:3,sort:count", her şehir adına sahip belge sayısına göre azalan düzende sonuç olarak en iyi üç kategoriyi alır). En iyi üç kategori Budget,Gor, And Luxury ve Budget 5 isabete sahipse, Kategori 6, Lüks ise 4 kategoriye sahipse demetler Sırasıyla Bütçe, Bütçe, Lüks olur. -value için "facet=rating,sort:-value", tüm olası derecelendirmeler için değere göre azalan sırada demetler üretir (örneğin, derecelendirmeler 1'den 5'e doğru ise, demetler her derecelendirmeyle kaç belge eşlense 5, 4, 3, 2, 1 olarak sıralanmış olur). "değerler", kanalla ayrılmış sayısal veya dinamik bir facet giriş değerleri kümesi belirten Edm.DateTimeOffset değerleri olarak ayarlanmış olabilir (örneğin, "facet=baseRate,values:10 20" üç demet üretir: biri taban oranı 0'a kadar, | ancak 10'a kadar, biri 10'a kadar, ancak 20'i dahil değil, biri 20 ve daha yüksek olmak üzere) üretir. "facet=lastRenovationDate,values:2010-02-01T00:00:00Z" dizesi iki demet üretir: biri Şubat 2010'dan önce tatil yapılan oteller ve biri 1 Şubat 2010 veya sonraki bir tarihten sonra ziyaret edilmiş oteller için. "interval", sayılar için 0'dan büyük bir tamsayı aralığı veya tarih saat değerleri için dakika, saat, gün, hafta, ay, üç aylık yıl değeridir. Örneğin, "facet=baseRate,interval:100", 100 boyutuna sahip taban fiyat aralıklarına göre demetler üretir. Taban oranlarının hepsi 60 ABD doları ile 600 ABD doları arasında ise 0-100, 100-200, 200-300, 300-400, 400-500 ve 500-600 demetleri olur. "facet=lastRenovationDate,interval:year" dizesi, oteller tutularak her yıl için bir demet üretir. "timeoffset" ([+-]hh:mm, [+-]hhmm veya [+-]hh) olarak ayarlanmıştır. Kullanılırsa, timeoffset parametresinin aralık seçeneğiyle ve yalnızca Edm.DateTimeOffset türünde bir alana uygulandığında birleştirilmiş olması gerekir. değeri, ayar zaman sınırları içinde için hesaba UTC saat uzaklığı belirtir. Örneğin: "facet=lastRenovationDate,interval:day,timeoffset:-01:00", 01:00:00 UTC'de (hedef saat diliminde gece yarısı) başlayan gün sınırını kullanır. count ve sort aynı facet belirtimleriyle birleştirilmiş olabilir, ancak aralık veya değerlerle birleştirilamaz ve aralık ve değerler birlikte birleştirilamaz. Tarih saatle ilgili aralık facet'leri, zaman aralığı belirtilmezse UTC saatlerine göre hesaplanır. Örneğin: "facet=lastRenovationDate,interval:day" için gün sınırı 00:00:00 UTC'de başlar. |
| $filter | string | İsteğe bağlı. Standart OData söz dizimlerinde yapılandırılmış bir arama ifadesi. Filtrede yalnızca filtrelenebilir alanlar kullanılabilir. POST ile çağrılırken, bu parametre filtre yerine filter $filter. OData ifadesi dil bilgisinin Azure Bilişsel Arama alt kümesi hakkında ayrıntılı bilgi için bkz. OData İfadesi Söz Dizimi Azure Bilişsel Arama. |
| Vurgula -mak | string | İsteğe bağlı. Vurgulanan isabetler için kullanılan virgülle ayrılmış alan adları kümesi. Yalnızca aranabilir alanlar, isabet vurgulama için kullanılabilir. Varsayılan olarak, Azure Bilişsel Arama alan başına en fazla 5 vurgu döndürür. Sınır, alan adının arkasına "-<en fazla vurgu sayısı"> alan başına yapılandırılabilir. Örneğin, "highlight=title-3,description-10", başlık alanından en fazla 3 vurgulanmış isabet ve açıklama alanından en fazla 10 isabet döndürür. En fazla vurgu sayısı 1 ile 1000 (dahil) arasında bir tamsayı olmalıdır. |
| highlightPostTag | string | İsteğe bağlı. Varsayılan olarak "</em>" kullanılır. Vurgulanan terime eklenen bir dize etiketi. highlightPreTag ile ayarlanmış olması gerekir. URL'de ayrılmış karakterler yüzde olarak kodlanmış olmalıdır (örneğin, #yerine %23). |
| highlightPreTag | string | İsteğe bağlı. Varsayılan olarak "</em>" kullanılır. Vurgulanan terimin ön ucu olan bir dize etiketi. highlightPostTag ile ayarlanmış olması gerekir. URL'de ayrılmış karakterler yüzde olarak kodlanmış olmalıdır (örneğin, #yerine %23). |
| minimumKtaralama | tamsayı | İsteğe bağlı. Geçerli değerler 0 ile 100 arasında bir sayıdır ve sorgunun başarılı olarak bildirilemeden önce sorguya hizmet için kullanılabilir olması gereken dizin yüzdesini belirtir. Varsayılan olarak "100". Yüzde yüz kapsam, i isteği yanıtlayan tüm parçaların (hizmet durumu sorunları veya bakım etkinliklerinin kapsamın azalması) anlamına gelir. Varsayılan ayar altında, tam kapsamın altında 503 HTTP durum kodu döner.503 hata oluştuğunda ve özellikle de tek bir çoğaltma için yapılandırılmış hizmetler için sorgu başarı olasılığını artırmak istediğinizde minimumCoverage'ın düşürülerek yararlı olabilir. minimumKopyalama ve Arama başarılı olarak ayarlanırsa HTTP 200 değeri döner ve yanıta, sorguya dahil edilen dizinin yüzdesini belirten bir değer @search.coverage dahil edilir. Bu senaryoda, eşleşen tüm belgelerin arama sonuçlarında mevcut olması garanti değildir, ancak arama kullanılabilirliği geri çağırmadan daha önemli ise kapsamı azaltmak uygun bir risk azaltma stratejisi olabilir. |
| $orderby | string | İsteğe bağlı. Sonuçları sıralamak için virgülle ayrılmış ifadelerin listesi. POST ile çağrıldıklarda bu parametre, yeni bir parametre yerine orderby $orderby. Her ifade bir alan adı veya geo.distance() işlevine yapılan bir çağrı olabilir. Her ifadeyi artan olarak belirtmek için "asc" ve azalanları belirtmek için "desc" takip etmek mümkün. Sıralama alanında null değerler varsa, null değerler önce artan düzende, son olarak da azalan düzende görünür. Varsayılan artan düzendir. Eşitler, belgelerin eşleşme puanlarına göre kırılır. Herhangi bir $orderby belirtilmezse, varsayılan sıralama düzeni belge eşleşme puanına göre azalan düzendedir. Tümceler için 32 yan tümcesi $orderby. |
| Querytype | string | İsteğe bağlı. Geçerli değerler "basit" veya "tam" değerlerdir. Varsayılan olarak "simple" kullanılır. "basit", , ve gibi sembollere izin veren basit sorgu söz dizimi kullanarak sorgu + dizelerini * "" yorumlar. Sorgular, varsayılan olarak her belgede tüm aranabilir alanlar (veya searchField'larda belirtilen alanlar) genelinde değerlendirilir. "full", alana özgü ve ağırlıklı aramalara olanak sağlayan tam Lucene sorgu söz dizimi kullanarak sorgu dizelerini yorumlar. Lucene sorgu dilinde aralık araması, benzer işlevler sunan $filter için desteklenmiyor. |
| scoringParameter | string | İsteğe bağlı. "name-value1,value2" biçimini kullanarak bir puanlama işlevinde tanımlanan her parametrenin değerlerini (referencePointParameter gibi) ,... POST ile çağrıldıklarda bu parametre scoringParameter yerine scoringParameters olarak adlandırılmıştır. Ayrıca, her dizenin ayrı bir ad-değer çifti olduğu bir JSON dize dizisi olarak belirtirsiniz. Bir işlev içeren puanlama profilleri için işlevi giriş listesinden bir karakterle - ayırabilirsiniz. Örneğin, adlı bir işlev "mylocation" "&scoringParameter=mylocation--122.2,44.8" olabilir. İlk tire işlev adını değer listesinden, ikinci tire ise ilk değerin (bu örnekte boylam) bir parçası olur. Virgül içererek etiket artırma gibi puanlama parametreleri için, tek tırnak kullanarak bu tür değerleri listeden çıkarabilirsiniz. Değerlerin kendileri tek tırnak içeriyorsa, iki katına inerek bunları kaçış olarak kullanabilirsiniz. Adlı bir etiket yükseltme parametresi olduğunu "mytag" ve "Hello, lt;" ve "Smith" etiket değerlerini artırmak istediğinizi varsayalım. sorgu dizesi seçeneği daha sonra "&scoringParameter = MyTag-'Hello, O ' ' Brien ', Smith" olacaktır. Tırnak işaretleri yalnızca virgül içeren değerler için gereklidir. |
| scoringProfile | string | İsteğe bağlı. Sonuçları sıralamak için eşleşen bir belge için eşleşme puanlarını değerlendirmek üzere bir Puanlama profili adı. |
| scoringStatistics | string | İsteğe bağlı. Geçerli değerler şunlardır "yerel" veya "genel". Varsayılan olarak "yerel" olarak belirlenmiştir. Daha tutarlı Puanlama için, belge sıklığı, genel olarak (tüm parçalar genelinde) veya daha düşük gecikme süresi için yerel olarak (geçerli parça üzerinde), Puanlama istatistiklerinin desteklenip hesaplanmayacağını belirtin. Bkz. Azure bilişsel arama Puanlama istatistikleri. Yalnızca benzer arama (' ~ ')kullanan şartlar için Puanlama istatistikleri her zaman yerel olarak hesaplanır. |
| search | string | İsteğe bağlı. Aranacak metin. SearchFields belirtilmediği takdirde, tüm aranabilir alanlara varsayılan olarak aranır. Dizinde, aranabilir bir alandaki metin simgeleştirilir, bu nedenle birden çok terim boşluk ile ayrılabilir (örneğin: ' Search = Hello World '). Herhangi bir terimi eşleştirmek için kullanın * (Bu, Boole filtre sorguları için yararlı olabilir). Bu parametrenin atlanması, ile ayarıyla aynı etkiye sahiptir * . Arama söz dizimi hakkında ayrıntılar için bkz. basit sorgu söz dizimi . Sonuçlar, aranabilir alanların sorgulanması sırasında bazen ortaya çıkmış olabilir. Belirteç ayırıcı, zaman işaretleri, sayılarda virgüller ve benzeri gibi Ingilizce metin için ortak olan çalışmaları işleme mantığını içerir. Örneğin, Ingilizce 'de büyük sayılar için binlik ayırıcıları olarak kullanıldığından, ' Search = 123456 ', tek bir ' 123 ' ve ' 456 ' terimleri yerine tek bir "123.456" terimiyle eşleşir. Bu nedenle, arama parametresindeki terimleri ayırmak için noktalama yerine boşluk kullanmanızı öneririz. |
| searchMode | string | İsteğe bağlı. Geçerli değerler "Any" veya "All" varsayılandır. Belgeyi eşleşme olarak saymak için arama terimlerinin bir veya tümünün eşleşmesi gerekip gerekmediğini belirtir. |
| searchFields | string | İsteğe bağlı. Belirtilen metni aramak için virgülle ayrılmış alan adlarının listesi. Hedef alanların dizin şemasında aranabilir olarak işaretlenmesi gerekir. |
| $select | string | İsteğe bağlı. Sonuç kümesine dahil edilecek, virgülle ayrılmış alanların listesi. Bu yan tümcesine yalnızca alınabilir olarak işaretlenen alanlar eklenebilir. Belirtilmemişse veya olarak ayarlandıysa * , şemada alınabilir olarak işaretlenen tüm alanlar projeksiyonda eklenir. POST ile çağrıldığında, bu parametre $select yerine Select olarak adlandırılır. |
| Kimliği | string | İsteğe bağlı. SessionID kullanmak, birden çok çoğaltmala arama hizmeti için tutarlılık puanı tutarlılığını artırmaya yardımcı olur. Çoklu çoğaltma yapılandırmalarında, aynı sorgu için tek tek belgelerin ilgi puanları arasında hafif farklar olabilir. Bir oturum KIMLIĞI sağlandığında hizmet, belirli bir isteği o oturum için aynı çoğaltmaya yönlendirmek için en iyi çabayı yapar. Aynı oturum KIMLIĞI değerlerinin sürekli olarak yeniden kullanılması, çoğaltmalarda isteklerin yük dengelenmesini etkileyebilir ve arama hizmetinin performansını olumsuz yönde etkileyebilir. SessionID olarak kullanılan değer bir ' _ ' karakteriyle başlayamaz. Bir hizmetin hiçbir çoğaltması yoksa, bu parametrenin performans veya puan tutarlılığı üzerinde hiçbir etkisi yoktur. |
| $skip | tamsayı | İsteğe bağlı. Atlanacak arama sonuçlarının sayısı. POST ile çağrıldığında, bu parametre $skip yerine Skip olarak adlandırılır. Bu değer 100.000 ' den büyük olamaz. Belgeleri sırayla taradıysanız, ancak bu sınırlama nedeniyle $skip kullanamıyorsanız, dizindeki her belge için benzersiz değerler içeren bir alanda $orderby (örneğin, belge anahtarı gibi) ve bir Aralık sorgusuyla $filter kullanmayı göz önünde bulundurun. |
| $top | tamsayı | İsteğe bağlı. Alınacak arama sonuçlarının sayısı. Bu varsayılan değer 50 ' dir. POST ile çağrıldığında, bu parametre $top yerine top olarak adlandırılır. 1000 'den büyük bir değer belirtirseniz ve 1000 ' den fazla sonuç varsa, sonraki sonuç sayfasına yönelik bir bağlantıyla birlikte yalnızca ilk 1000 sonucu döndürülür ( @odata.nextLink Aşağıdaki örnekte bulunan bölümüne bakın). Azure Bilişsel Arama, sorguların aynı anda çok fazla belge almasını engellemek için sunucu tarafı sayfalama kullanır. Varsayılan sayfa boyutu 50 ' dir, ancak en fazla sayfa boyutu 1000 ' dir. Bu, varsayılan olarak arama belgelerinin $top belirtmezseniz en çok 50 sonucu döndürdüğünü gösterir. 50 ' den fazla sonuç varsa, yanıt en fazla 50 sonucun sonraki sayfasını almak için bilgiler içerir ( @odata.nextLink Aşağıdaki örneklerde "" ve "" başlığına bakın @search.nextPageParameters . Benzer şekilde, $top için 1000 ' den büyük bir değer belirtirseniz ve 1000 ' den fazla sonuç varsa, en çok 1000 sonucun sonraki sayfasını alma bilgileri ile birlikte yalnızca ilk 1000 sonuç döndürülür. |
Yanıt
Durum kodu: başarılı bir yanıt için 200 Tamam döndürülür.
{
"@odata.count": # (if $count=true was provided in the query),
"@search.coverage": # (if minimumCoverage was provided in the query),
"@search.facets": { (if faceting was specified in the query)
"facet_field": [
{
"value": facet_entry_value (for non-range facets),
"from": facet_entry_value (for range facets),
"to": facet_entry_value (for range facets),
"count": number_of_documents
}
],
...
},
"@search.nextPageParameters": { (request body to fetch the next page of results if not all results could be returned in this response and Search was called with POST)
"count": ... (value from request body if present),
"facets": ... (value from request body if present),
"filter": ... (value from request body if present),
"highlight": ... (value from request body if present),
"highlightPreTag": ... (value from request body if present),
"highlightPostTag": ... (value from request body if present),
"minimumCoverage": ... (value from request body if present),
"orderby": ... (value from request body if present),
"scoringParameters": ... (value from request body if present),
"scoringProfile": ... (value from request body if present),
"scoringStatistics": ... (value from request body if present),
"search": ... (value from request body if present),
"searchFields": ... (value from request body if present),
"searchMode": ... (value from request body if present),
"select": ... (value from request body if present),
"sessionId" : ... (value from request body if present),
"skip": ... (page size plus value from request body if present),
"top": ... (value from request body if present minus page size),
},
"value": [
{
"@search.score": document_score (if a text query was provided),
"@search.highlights": {
field_name: [ subset of text, ... ],
...
},
"@search.features": {
"field_name": {
"uniqueTokenMatches": feature_score,
"similarityScore": feature_score,
"termFrequency": feature_score,
},
...
},
key_field_name: document_key,
field_name: field_value (retrievable fields or specified projection),
...
},
...
],
"@odata.nextLink": (URL to fetch the next page of results if not all results could be returned in this response; Applies to both GET and POST)
}
Örnekler
Azure bilişsel arama Için OData Ifade sözdizimindeek örnekler bulabilirsiniz.
Dizine göre azalan düzende sıralanan dizinde ara:
GET /indexes/hotels/docs?search=*&$orderby=LastRenovationDate desc&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "*", "orderby": "LastRenovationDate desc" }Çok yönlü bir aramada, dizinde arama yapın ve kategorilerin, derecelendirmelerin, etiketlerin yanı sıra belirli aralıklarda Baserine sahip öğelerin modellerini alın.
GET /indexes/hotels/docs?search=*&facet=Category&facet=Rating&facet=Tags&facet=Rooms/BaseRate,values:80|150|220&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "test", "facets": [ "Category", "Rating", "Tags", "Rooms/BaseRate,values:80|150|220" ] }Son modelin bir alt alanda olduğunu unutmayın. Modeller, ana belgeyi (oteller) değil, ara alt belgeleri (Odalar) değil, bu nedenle yanıt her bir fiyat demeti içinde herhangi bir odaya sahip olan oteller sayısını saptacaktır.
Filtre kullanarak, Kullanıcı derecelendirme 3 ' ü ve "Motel" kategorisini seçtikten sonra, çok yönlü olan önceki sorgu sonucunu daraltın.
GET /indexes/hotels/docs?search=*&facet=tags&facet=Rooms/BaseRate,values:80|150|220&$filter=Rating eq 3 and Category eq 'Motel'&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "test", "facets": [ "tags", "Rooms/BaseRate,values:80|150|220" ], "filter": "Rating eq 3 and Category eq 'Motel'" }Çok yönlü bir aramada, sorguda döndürülen benzersiz şartlar üzerinde üst sınır ayarlayın. Varsayılan değer 10 ' dur, ancak model özniteliğinde Count parametresini kullanarak bu değeri artırabilir veya azaltabilirsiniz. Bu örnek, şehir için model döndürür ve 5 ile sınırlıdır.
GET /indexes/hotels/docs?search=*&facet=Address/City,count:5&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "test", "facets": [ "Address/City,count:5" ] }Dizinde belirli alanlar içinde arama yapın (örneğin, bir dil alanı):
GET /indexes/hotels/docs?search=hôtel&searchFields=Description_fr&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "hôtel", "searchFields": "Description_fr" }Dizinde birden çok alanda arama yapın. Örneğin, aranabilir alanları, hepsi aynı dizin içinde birden çok dilde depolayıp sorgulayabilirsiniz. Aynı belgede Ingilizce ve Fransızca açıklamaları birlikte mevcutsa, sorgu sonuçlarında herhangi birini veya tümünü döndürebilirsiniz:
GET /indexes/hotels/docs?search=hotel&searchFields=Description,Description_fr&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "hotel", "searchFields": "Description, Description_fr" }Tek seferde yalnızca dizin sorgulayabilirsiniz. Tek seferde bir tane sorgulamayı planlamıyorsanız, her dil için birden çok dizin oluşturmayın.
Sayfalama-öğelerin ilk sayfasını al (sayfa boyutu 10 ' dur):
GET /indexes/hotels/docs?search=*&$skip=0&$top=10&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "*", "skip": 0, "top": 10 }Sayfalama-öğelerin ikinci sayfasını alın (sayfa boyutu 10 ' dur):
GET /indexes/hotels/docs?search=*&$skip=10&$top=10&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "*", "skip": 10, "top": 10 }Belirli bir alan kümesini al:
GET /indexes/hotels/docs?search=*&$select=HotelName,Description&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "*", "select": "HotelName, Description" }Belirli bir filtre ifadesiyle eşleşen belgeleri al:
GET /indexes/hotels/docs?$filter=(Rooms/BaseRate ge 60 and Rooms/BaseRate lt 300) or HotelName eq 'Fancy Stay'&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "filter": "(Rooms/BaseRate ge 60 and Rooms/BaseRate lt 300) or HotelName eq 'Fancy Stay'" }Dizinde arama yapın ve isabet noktaları ile dönüş parçaları:
GET /indexes/hotels/docs?search=something&highlight=Description&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "something", "highlight": "Description" }Dizinde arama yapın ve bir başvuru konumundan daha yakın bir yere sıralanmış olan belgeleri geri döndürün:
GET /indexes/hotels/docs?search=something&$orderby=geo.distance(Location, geography'POINT(-122.12315 47.88121)')&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "something", "orderby": "geo.distance(Location, geography'POINT(-122.12315 47.88121)')" }"CurrentLocation" adlı bir parametreyi ve diğeri "lastLocation" adlı bir parametreyi tanımlayan iki mesafe Puanlama işlevleriyle "coğrafi" olarak adlandırılan bir Puanlama profili olduğunu varsayarak dizinde arama yapın:
GET /indexes/hotels/docs?search=something&scoringProfile=geo&scoringParameter=currentLocation--122.123,44.77233&scoringParameter=lastLocation--121.499,44.2113&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "something", "scoringProfile": "geo", "scoringParameters": [ "currentLocation--122.123,44.77233", "lastLocation--121.499,44.2113" ] }Basit sorgu söz dizimini kullanarak dizinde belge bulun. Bu sorgu, aranabilir alanların "rakip" ve "konum" terimlerini içerdiği ancak "Motel" olarak değil, oteller döndürür:
Get /indexes/hotels/docs?search=comfort +location –motel&searchMode=all&api-version=22020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "comfort +location -motel", "searchMode": "all" }İpucu
Öğesinin
searchMode=allvarsayılan değerini geçersiz kılarsearchMode=any,-motelbunun yerıne "veya Not" DEĞIL "ve değil" anlamına gelir. OlmadansearchMode=all, arama sonuçlarını kısıtlamadan önce genişleyen "veya Not" alırsınız ve bu, bazı kullanıcılar için sayaç sezgisel olabilir.Dizinde Lucene sorgu söz diziminikullanarak belge bulun. Bu sorgu, Kategori alanının "bütçe" terimini ve "son randevu" ifadesini içeren tüm aranabilir alanları içermesi halinde oteller döndürür. "Son randevu" ifadesini içeren belgeler, artırma değeri (3) sonucu olarak daha yüksek sıralanır
GET /indexes/hotels/docs?search=Category:budget AND \"recently renovated\"^3&searchMode=all&api-version=2020-06-30&querytype=full`POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "Category:budget AND \"recently renovated\"^3", "queryType": "full", "searchMode": "all" }Favoring, daha düşük gecikme süresine göre tutarlı Puanlama yaparken dizinde belge bulun. Bu sorgu, tüm dizinde belge sıklıklarını hesaplar ve tutarlı ve tekrarlanabilir bir sıralama oluşturmaya yardımcı olacak aynı "oturumdaki" tüm sorgular için aynı çoğaltmayı hedeflemek için en iyi çaba kullanacaktır.
GET /indexes/hotels/docs?search=hotel&sessionId=mySessionId&scoringStatistics=global&api-version=2020-06-30POST /indexes/hotels/docs/search?api-version=2020-06-30 { "search": "hotel", "sessionId": "mySessionId", "scoringStatistics" :"global" }