Query API ile arama arayüzü oluşturma

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:

  1. Arama uygulaması yapılandırma
  2. Uygulama için OAuth kimlik bilgileri oluşturun.
  3. Dizini sorgulayın.
  4. 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:

Ö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: ASCENDING veya DESCENDING.

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.