Menentukan sinonim

Umumnya, suatu organisasi memiliki terminologi unik atau beberapa cara untuk merujuk pada konsep atau hal tertentu. Anda harus menentukan sinonim untuk menetapkan kesetaraan istilah agar pengguna dapat menemukan item ketika melakukan penelusuran.

Sinonim ditentukan dengan mengindeks item menggunakan skema populer _dictionaryEntry.

Item dengan jenis _dictionaryEntry dapat memiliki properti berikut:

Properti Jenis Deskripsi Wajib diisi?
_term string Istilah yang akan ditentukan. Nilai yang disarankan adalah kata tanpa tanda penghubung atau frasa tanpa tanda baca. Wajib
_synonym string (berulang) Istilah alternatif yang akan disertakan dalam kueri yang cocok dengan string yang ditentukan di _term. Wajib
_onlyBerlakuForAttachedSearchApplications boolean Memungkinkan Anda mengelompokkan sinonim menurut sumber data dan aplikasi penelusuran. Untuk informasi selengkapnya, lihat Menentukan sinonim khusus sumber data. Opsional

Saat pengguna menyertakan nilai properti _term dalam sebuah kueri, kueri efektif akan menjadi "istilah OR sinonim". Misalnya, jika istilah "scifi" didefinisikan dengan sinonim "sains fiksi", kueri yang berisi kata "scifi" akan cocok dengan item yang berisi "scifi" atau "fiksi ilmiah".

Penerapan sinonim tidak bersifat dua arah. Jika kuerinya bukan untuk "science fiksi", Cloud Search tidak akan menerapkan sinonim apa pun pada kueri tersebut. Kueri hanya akan cocok dengan item yang berisi "science fiksi". Item yang berisi "scifi" akan dihilangkan.

Agar kedua istilah tersebut dapat dipertukarkan, tentukan setiap istilah secara terpisah:

Masa Berlaku Sinonim
scifi science fiction
science fiction scifi

Selama pemrosesan kueri, tanda hubung dan tanda baca lainnya dihapus sebelum menerapkan sinonim. Kueri pengguna "sci-fi" cocok dengan _term "sci fi". Agar dapat membuat sinonim untuk istilah yang mungkin ditulis dengan tanda hubung oleh pengguna, pertama-tama normalkan _term untuk menggunakan spasi kosong, bukan tanda hubung.

Melanjutkan contoh di atas, definisi berikut cocok dengan kueri pengguna dalam memperlakukan "sci-fi", "sci fi", "scifi", dan "science fusion" sebagai hal yang dapat dipertukarkan:

Masa Berlaku Sinonim
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

Secara default, sinonim dalam sumber data apa pun berlaku di seluruh domain. Secara khusus, sinonim diterapkan di seluruh aplikasi penelusuran untuk semua penelusuran, terlepas dari sumber datanya. Jika Anda menginginkan sinonim khusus sumber data, lihat Menentukan sinonim khusus sumber data.

Menentukan sinonim global menggunakan Cloud Search SDK

Anda dapat menggunakan SDK Konektor Konten untuk menentukan istilah dan sinonimnya. Lihat Membuat konektor konten untuk mengetahui petunjuk tentang cara membuat konektor.

Cuplikan berikut mengilustrasikan pembuatan RepositoryDoc yang mewakili istilah dan sinonim berdasarkan catatan file CSV:

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();
}

Perhatikan hal-hal berikut saat menentukan sinonim:

  • Entri sinonim harus menjadi publik domain. Pada contoh sebelumnya, hal tersebut dilakukan dengan menetapkan ACL ke DOMAIN_PUBLIC_ACL.
  • Properti berikut tidak boleh ditentukan untuk file konfigurasi Anda karena menggantikan setelan publik domain dalam kode Anda:
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

Menentukan sinonim khusus aplikasi penelusuran

Secara default, sinonim diterapkan ke semua sumber data di semua aplikasi penelusuran.

Namun, anggaplah organisasi Anda memiliki tim engineer dan tim penjualan yang terpisah, dan Anda ingin memberikan pengalaman penelusuran yang berbeda kepada setiap tim, termasuk sinonim khusus peran pekerjaan. Dalam hal ini, Anda dapat membuat satu aplikasi penelusuran dengan sumber data khusus engineering serta sinonim dan aplikasi penelusuran lainnya dengan sumber data khusus penjualan dan sinonim. Untuk mencapai sasaran ini, indeks setiap sinonim dalam sumber data tertentu menggunakan _onlyApplicableForAttachedSearchApplications=true. Setelan ini membatasi sinonim sehingga hanya diterapkan pada aplikasi penelusuran yang menyertakan sumber data tertentu.

Misalnya, menambahkan baris kode berikut ke contoh kode sebelumnya memastikan sinonim yang diindeks bersifat spesifik per sumber data:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);