Eş anlamlı kelimeleri tanımlama

Bir kurumun farklı terminolojiye veya farklı yöntemlere sahip olması yaygın bir durumdur. bir kavrama veya nesneye atıfta bulunmaktır. Eş anlamlıları tanımlamanız ve arama sırasında kullanıcıların öğeleri bulmasına yardımcı olmak için terimlerin eşdeğerliği

'e dokunun.

Eş anlamlılar, iyi bilinen _dictionaryEntry içeren öğelerin dizine eklenmesiyle tanımlanır şema.

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

Özellik Tür Açıklama Zorunlu mu?
_term string Tanımlanacak terim. Önerilen değerler, noktalama işareti içermeyen kelimeler veya kelime öbekleridir. Zorunlu
_synonym string (repeated) _term politikasında tanımlanan dizeyle eşleşen sorgulara dahil edilecek alternatif terimler. Zorunlu
_onlyApplicableForAttachedSearchApplications boolean Eş anlamlıları 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ılar tanımlama bölümüne bakın. İsteğe bağlı

Kullanıcı bir sorguya _term özelliğinin değerini dahil ettiğinde etkili sorgu, "terim VEYA eş anlamlılar" olur. Örneğin, "scifi" terimi eş anlamlıyla tanımlanmış "science fiction" ve ardından bir sorgu "scifi" kelimesini içeren şu öğeleri içeren öğelerle eşleşir: "scifi" veya "science fiction."

Eş anlamlılar çift yönlü uygulanmaz. Sorgu bunun yerine "science fiction," Cloud Search sorguya hiçbir eş anlamlı kelime uygulanmaz. Sorgu yalnızca "science fiction." Şunu içeren öğe: "scifi" atlandı.

Her iki terimin birbirinin yerine kullanılabilmesini sağlamak için her terimi ayrı ayrı tanımlayın:

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

Sorgu işleme sırasında, öncekinden daha önce tire işareti ve diğer noktalama işaretleri kaldırılır bazı terimleri içerir. Kullanıcı sorgusu "sci-fi" _term "sci fi." ile eşleşiyor Kullanıcılar tarafından kısa çizgiyle yazılabilecek terimlerin eş anlamlılarını oluşturmak için önce normalleştirin tire yerine boşluk kullanmak için _term.

Örnekten devam edersek aşağıdaki tanımlar, kullanıcı sorgularının işleme koyduğu "sci-fi," "sci fi," "scifi," ve Değiştirilebilir olarak "science fiction":

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

Varsayılan olarak, herhangi bir veri kaynağındaki eş anlamlılar tüm alan genelinde geçerlidir. Daha ayrıntılı ifade etmek gerekirse, eş anlamlı kelimeler tüm aramalar için arama uygulamalarında uygulanır. veri kaynağından bağımsız olarak. Veri kaynağına özgü eş anlamlılar için Veri kaynağına özgü eş anlamlılar tanımlama bölümüne geçin.

Cloud Search SDK'sını kullanarak global eş anlamlıları tanımlama

Terimleri ve eş anlamlılarını tanımlamak için Content Connector SDK'sını kullanabilirsiniz. Görüntüleyin Şu içerik için içerik bağlayıcı oluşturun: bağlayıcı oluşturmayla ilgili talimatlara bakın.

Aşağıdaki snippet, bir RepositoryDoc bir CSV dosyası kaydına göre terimi ve eş anlamlıyı temsil eder:

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

Eş anlamlıları tanımlarken aşağıdakilere dikkat edin:

  • Eş anlamlı girişlerinin alanda herkese açık olması gerekir. Önceki örnekte, bu işlem, EKL'nin DOMAIN_PUBLIC_ACL olarak ayarlanmasıyla gerçekleştirilir.
  • Yapılandırma dosyanız için aşağıdaki özellikler tanımlanmamalıdır çünkü bunlar, kodunuzdaki herkese açık alan ayarını geçersiz kılar:
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

Arama uygulamasına özgü eş anlamlıları tanımlayabilirsiniz.

Varsayılan olarak, eş anlamlılar tüm aramalardaki tüm veri kaynaklarına uygulanır izin verir.

Ancak kuruluşunuzun mühendislik ve satış ekiplerinin ayrı olduğunu ve her ekibe farklı bir arama deneyimi sunmak istiyorsunuz, eş anlamlı kelimeler ekleyin. Bu durumda, iki veya daha fazla mühendisliğe özgü veri kaynağı, eş anlamlıları ve başka bir satışa özel veri kaynağı ve eş anlamlıları olan bir arama uygulaması kullanın. Şu hedeflere ulaşmak için: göndermek istiyorsanız, her eş anlamlı terimi belirli bir veri kaynağındaki _onlyApplicableForAttachedSearchApplications=true kullanılıyor. Bu ayarı, eş anlamlıları yalnızca aramaya uygulanacak şekilde sınırlandırır veya belirli bir veri kaynağı içeren uygulamalar için de geçerlidir.

Örneğin, önceki kod örneğine yönlendiren aşağıdaki kod satırı, dizine eklenen eş anlamlıların veri kaynağına özgüdür:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);