Query API, arama arayüzü oluşturmak veya sonuçları bir uygulamaya yerleştirmek için arama ve öneri yöntemleri sağlar.
Minimum gereksinimleri olan web uygulamaları için arama widget'ını kullanabilirsiniz. Arama widget'ı ile arama arayüzü oluşturma başlıklı makaleyi inceleyin.
Arama arayüzü oluşturma
Minimum düzeyde bir arama arayüzü oluşturmak için birkaç adım gerekir:
- Arama uygulaması yapılandırma
- Uygulama için OAuth kimlik bilgileri oluşturun.
- Dizini sorgulayın.
- Sorgu sonuçlarını görüntüleyin.
Sayfalama, sıralama, filtreleme, yönler ve otomatik tamamlama gibi özelliklerle arayüzü iyileştirebilirsiniz.
Arama uygulaması yapılandırma
Her arama arayüzü için en az bir arama uygulaması oluşturmanız gerekir. Bir arama uygulaması, veri kaynakları, sıralama düzeni, filtreler ve özellikler gibi varsayılan parametreler sağlar. Sorgu API'sini kullanarak bu parametreleri geçersiz kılabilirsiniz.
Bir sorguda kullanılan veri kaynaklarının sayısını, arama uygulamasında yapılandırılanların ötesine artıramazsınız. dataSourceRestrictions kullanarak bir sorguyu bu kaynakların bir alt kümesiyle sınırlayabilirsiniz.
Daha fazla bilgi için Arama deneyimini özelleştirme başlıklı makaleyi inceleyin.
Uygulama için OAuth kimlik bilgileri oluşturma
Cloud Search API'ye erişimi yapılandırma bölümündeki adımlara ek olarak web uygulamanız için OAuth kimlik bilgileri oluşturmanız gerekir.
Kullanıcı adına yetkilendirme isteğinde bulunmak için kimlik bilgilerini kullanın. Kapsam https://www.googleapis.com/auth/cloud_search.query kullanın.
OAuth seçenekleri hakkında daha fazla bilgi için Google Identity Platform'a bakın.
Dizini sorgulama
Dizinde arama yapmak için search yöntemini kullanın.
Her istekte bir query metni ve bir searchApplicationId bulunmalıdır.
Bu örnekte bir film veri kaynağı sorgulanıyor:
{
"query": "titanic",
"requestOptions": {
"searchApplicationId": "searchapplications/<search_app_id>"
}
}
Sorgu sonuçlarını görüntüleme
Arama arayüzlerinde öğe title ve orijinal öğeye bağlantı gösterilmelidir. Görüntülemeyi iyileştirmek için snippet'leri ve meta verileri de kullanabilirsiniz.
Ek sonuçları işleme
Cloud Search, bir sorgu için yeterli eşleşme olmadığında ek sonuçlar döndürür. queryInterpretation alanı bunu gösterir. Yalnızca ek sonuçlar döndürülürse,
InterpretationType REPLACE olur. Birleştirilmişse BLEND.
Ek sonuçlar döndürürken kullanıcıyı bilgilendirmeyi düşünün. REPLACE için "Aramanız hiçbir sonuçla eşleşmedi. Benzer sorgular için sonuçlar gösteriliyor."
Kullanıcı sonuçlarını işleme
Cloud Search, Kişi Arama özelliğini kullanarak kişilerle ve çalışan bilgilerle ilgili dokümanları döndürür. Sonuçlar structuredResults alanında gösterilir:
{
"results": [...],
"structuredResults": [{
"person": {...}
}]
}
Doğrudan Rapor Eşleştirme
Doğrudan bağlı çalışan eşleştirme özelliği, kullanıcıların bir kişinin doğrudan bağlı çalışanlarını görmesine olanak tanır. Yanıtta, assistCardProtoHolder cardType RELATED_PEOPLE_ANSWER_CARD ile birlikte yer alıyor.
Optimizasyonları devre dışı bırakma
Ek sonuçlar gibi optimizasyonlar varsayılan olarak etkindir. Bu bildirimleri devre dışı bırakabilirsiniz:
- Arama uygulama düzeyi:
force_verbatim_modetrueolarak ayarlayın. - Sorgu düzeyi:
enableVerbatimModedeğerinitrueolarak ayarlayın.
Öne çıkan snippet'ler
Cloud Search, dizine eklenmiş metin veya HTML için bir snippet döndürür. Sorgu terimleri varsa matchRanges bunların konumunu tanımlar. Metni vurgulamak için bu aralıkları kullanın.
function highlightSnippet(snippet) {
let text = snippet.snippet;
let formattedText = text;
if (snippet.matchRanges) {
let parts = [];
let index = 0;
for (let match of snippet.matchRanges) {
let start = match.start || 0; // Default to 0 if omitted
let end = match.end;
if (index < start) { // Include any leading text before/between ranges
parts.push(text.slice(index, start));
}
parts.push('<span class="highlight">');
parts.push(text.slice(start, end));
parts.push('</span>');
index = end;
}
parts.push(text.slice(index)); // Include any trailing text after last range
formattedText = parts.join('');
}
return formattedText;
}
Snippet'i göz önünde bulundurarak:
{
"snippet": "This is an example snippet...",
"matchRanges": [
{
"start": 11,
"end": 18
}
]
}
Elde edilen HTML dizesi şöyledir:
This is an <span class="highlight">example</span> snippet...
Yayınlanan içerik meta verisi
createTime, updateTime ve yapılandırılmış veri gibi bilgiler için metadata alanını kullanın.
Yapılandırılmış verileri göstermek için displayOptions kullanın.
Ek sonuçları alma
Daha fazla sonuç almak için start alanını seçilen ofsete ayarlayın. pageSize ile sayfa boyutunu ayarlayın. Toplam öğeleri veya tahmini sayıları göstermek için
resultCount kullanın.
Sıralama sonuçları
Sırayı belirtmek için
sortOptions
kullanın:
operatorName: Sıralama yapılacak özellik.sortOrder:ASCENDINGveyaDESCENDING.
Alaka düzeyi, varsayılan ve ikincil sıralama anahtarıdır.
Filtre ekleme
Arama uygulamasında veya isteğinde filtreler kullanarak sonuçları kısıtlayın. Her ikisi de bir kaynak için filtre belirtiyorsa her ikisi de doğru olarak değerlendirilmelidir.
dataSourceRestrictions.filterOptions[] içinde filtre uygulayın.
Birincil filtre türleri:
- Nesne filtreleri: Eşleşmeleri belirli bir türle kısıtlar.
- Değer filtreleri: Eşleşmeleri bir operatöre ve değere göre kısıtlar.
Bileşik filtreler birden fazla değer filtresini birleştirir.
Sonuçları yönlerle hassaslaştırma
Özellikler, kullanıcıların sorguları etkileşimli olarak daraltmasına yardımcı olur. Faset istediğinizde Cloud Search, bu özellikler için en sık kullanılan değerleri hesaplar.
Normal kalıp: 1. Faset özelliklerini belirten sorgu. 1. Arama ve yön sonuçlarını oluşturun. 1. Kullanıcı, yön değerlerini seçer. 1. Seçimlere göre filtre uygulayarak sorguyu tekrarlayın.
Tamsayı tabanlı alanlarla sonuçları daraltma
Sonuçları aralıklara göre hassaslaştırmak için bir tam sayı özelliğini filtrelenebilir olarak işaretleyin (ör.
"100-200" sayfa). isFacetable değerini true olarak ayarlayın ve şemada varsayılan gruplandırma seçeneklerini tanımlayın.
Sonuçları belge boyutuna veya tarihe göre daraltma
Ayrılmış operatörleri kullanma:
itemsize: bayt cinsinden dosya boyutu için.createddatetimestamp: Oluşturma tarihi için.lastmodified: Değişiklik tarihi için.
Öneri ekleme
Sorgu geçmişi, kişiler ve doküman içeriğine göre otomatik tamamlama için suggest API'yi kullanın.