Eş anlamlı kelimeleri tanımlama

Kuruluşlar genellikle benzersiz terminolojiye veya aynı kavrama atıfta bulunmanın birden fazla yoluna sahiptir. Eş anlamlıları tanımlamak, terim eşdeğerliğini belirleyerek kullanıcıların arama sırasında öğeleri bulmasına yardımcı olur.

Öğeleri _dictionaryEntry iyi bilinen şemasıyla dizine ekleyerek eş anlamlıları tanımlayın.

_dictionaryEntry türündeki öğeler aşağıdaki özelliklere sahip olabilir:

Mülk Tür Açıklama Zorunlu mu?
_term string Tanımlanacak terim. Önerilen değerler, noktalama işareti içermeyen ve tireyle ayrılmamış kelimeler veya kelime öbekleridir. Zorunlu
_synonym string (repeated) _term içinde tanımlanan dizeyle eşleşen sorgulara dahil edilecek alternatif terimler. Zorunlu
_onlyApplicableForAttachedSearchApplications boolean Eş anlamlı kelimeleri veri kaynağına ve arama uygulamasına göre gruplandırmanıza olanak tanır. Daha fazla bilgi için Veri kaynağına özgü eş anlamlı kelimeler tanımlama başlıklı makaleyi inceleyin. İsteğe bağlı

Bir kullanıcı sorguya _term değeri eklediğinde etkili sorgu "terim VEYA eş anlamlılar" olur. Örneğin, "scifi" öğesini "science fiction" eş anlamlısıyla tanımlarsanız "scifi" sorgusu, her iki terimi de içeren öğelerle eşleşir.

Eş anlamlılar varsayılan olarak çift yönlü değildir. "science fiction" sorgusu, eş anlamlı olarak "scifi" terimini de tanımlamadığınız sürece yalnızca bu tam kelime öbeğiyle eşleşir. Terimleri birbirinin yerine kullanılabilir hale getirmek için her birini ayrı ayrı tanımlayın:

Terim Eş anlamlılar
scifi science fiction
science fiction scifi

Sorgu işleme, eş anlamlı kelimeleri uygulamadan önce hecelemeyi ve noktalama işaretlerini kaldırır. "sci-fi" sorgusu, "sci fi" terimiyle eşleşir. Tireli terimleri desteklemek için _term öğesini tire yerine boşluk kullanacak şekilde normalleştirin.

Birbiriyle değiştirilebilir örnekler:

Terim Eş anlamlılar
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

Varsayılan olarak eş anlamlı kelimeler, alanın tamamında ve tüm arama uygulamalarında geçerlidir. Bunları sınırlamak için Veri kaynağına özgü eş anlamlılar tanımlama başlıklı makaleye bakın.

SDK'yı kullanarak genel eş anlamlıları tanımlama

Terimleri ve eş anlamlıları tanımlamak için İçerik Bağlayıcı SDK'sını kullanın. Ayrıntılı bilgi için İçerik bağlayıcı oluşturma başlıklı makaleyi inceleyin.

Bu snippet, bir CSV kaydından RepositoryDoc oluşturur:

DictionaryConnector.java
/**
 * Creates a document for indexing.
 *
 * For this connector sample, the created document is domain public
 *  searchable. The content is a simple text string.
 *
 * @param record The current CSV record to convert
 * @return the fully formed document ready for indexing
 */
private ApiOperation buildDocument(CSVRecord record) {
  // Extract term and synonyms from record
  String term = record.get(0);
  List<String> synonyms = StreamSupport.stream(record.spliterator(), false)
      .skip(1) // Skip term
      .collect(Collectors.toList());

  Multimap<String, Object> structuredData = ArrayListMultimap.create();
  structuredData.put("_term", term);
  structuredData.putAll("_synonym", synonyms);

  if (Configuration.getBoolean("dictionary.attachedToSearchApp", false).get()) {
    structuredData.put("_onlyApplicableForAttachedSearchApplications", true);
  }

  String itemName = String.format("dictionary/%s", term);

  // Using the SDK item builder class to create the item
  Item item =
      IndexingItemBuilder.fromConfiguration(itemName)
          .setItemType(IndexingItemBuilder.ItemType.CONTENT_ITEM)
          .setObjectType("_dictionaryEntry")
          .setValues(structuredData)
          .setAcl(DOMAIN_PUBLIC_ACL)
          .build();

  // Create the fully formed document
  return new RepositoryDoc.Builder()
      .setItem(item)
      .build();
}

Dikkat edilecek önemli noktalar:

  • Eş anlamlı girişler herkese açık olmalıdır. Örneğin, ACL'yi DOMAIN_PUBLIC_ACL olarak ayarlayabilirsiniz.
  • Yapılandırma dosyanızda bu ayarı geçersiz kılan defaultAcl.mode=FALLBACK veya defaultAcl.public=true gibi ayarlardan kaçının.

Arama uygulamasına özel eş anlamlılar tanımlama

Ekibe özel eş anlamlı kelimeler (ör. mühendislik ve satış için) sağlamak üzere her eş anlamlı kelimeyi _onlyApplicableForAttachedSearchApplications=true ile indeksleyin. Bu işlem, eş anlamlıları belirli veri kaynağını içeren arama uygulamalarıyla kısıtlar.

Örnek:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);