กําหนดคําพ้องความหมาย

องค์กรต่างๆ มักจะมีคำศัพท์เฉพาะหรือหลายวิธีในการอ้างถึงแนวคิดเดียวกัน การกำหนดคำพ้องความหมายจะสร้างความเท่าเทียมกันของคำ ซึ่งช่วยให้ผู้ใช้ค้นหารายการต่างๆ ได้ระหว่างการค้นหา

กำหนดคำพ้องความหมายโดยการจัดทำดัชนีรายการด้วยสคีมาที่รู้จักกันดี _dictionaryEntry

รายการประเภท _dictionaryEntry อาจมีพร็อพเพอร์ตี้ต่อไปนี้

พร็อพเพอร์ตี้ ประเภท คำอธิบาย จำเป็นหรือไม่
_term string คำที่จะกำหนด ค่าที่แนะนำคือคำหรือวลีที่ไม่มีเครื่องหมายยัติภังค์และไม่มีเครื่องหมายวรรคตอน ต้องระบุ
_synonym string (repeated) คำอื่นที่จะรวมไว้ในคําค้นหาที่ตรงกับสตริงที่กําหนดไว้ใน _term ต้องระบุ
_onlyApplicableForAttachedSearchApplications boolean ช่วยให้คุณจัดกลุ่มคำพ้องความหมายตามแหล่งข้อมูลและแอปพลิเคชันการค้นหาได้ ดูข้อมูลเพิ่มเติมได้ที่ กำหนดคำพ้องความหมายเฉพาะแหล่งข้อมูล ไม่บังคับ

เมื่อผู้ใช้ใส่ค่า _term ในคําค้นหา คําค้นหา ที่มีผล จะกลายเป็น "term OR synonyms" ตัวอย่างเช่น หากคุณกำหนด "scifi" ด้วยคำพ้องความหมาย "science fiction" คำค้นหา "scifi" จะตรงกับรายการ ที่มีคำใดคำหนึ่ง

คำพ้องความหมายจะไม่เป็นแบบสองทิศทางโดยค่าเริ่มต้น คำค้นหา "science fiction" จะตรงกับวลีนั้นๆ เท่านั้น เว้นแต่ คุณจะกำหนดวลีนี้เป็นคำที่มี "scifi" เป็นคำ พ้องความหมายด้วย หากต้องการให้คำต่างๆ ใช้แทนกันได้ ให้กำหนดแต่ละคำแยกกันดังนี้

คำศัพท์ คำพ้องความหมาย
scifi science fiction
science fiction scifi

การประมวลผลคำค้นหาจะนำเครื่องหมายยัติภังค์และเครื่องหมายวรรคตอนออกก่อนที่จะใช้คำพ้องความหมาย คำค้นหา "sci-fi" จะตรงกับคำว่า "sci fi" หากต้องการรองรับคำที่มีเครื่องหมายยัติภังค์ ให้แปลง _term เป็นคำปกติโดยใช้ช่องว่างแทนเครื่องหมายยัติภังค์

ตัวอย่างคำที่ใช้แทนกันได้

คำศัพท์ คำพ้องความหมาย
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

โดยค่าเริ่มต้น คำพ้องความหมายจะมีผลกับทั้งโดเมนและแอปพลิเคชันการค้นหาทั้งหมด หากต้องการจำกัดคำพ้องความหมาย โปรดดูที่ กำหนดคำพ้องความหมายเฉพาะแหล่งข้อมูล

กำหนดคำพ้องความหมายส่วนกลางโดยใช้ SDK

ใช้ Content Connector SDK เพื่อกำหนดคำและคำพ้องความหมาย ดูรายละเอียดได้ที่ สร้าง Content Connector

ข้อมูลโค้ดนี้สร้าง RepositoryDoc จากระเบียน 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();
}

สิ่งสำคัญที่ควรพิจารณา

  • รายการคำพ้องความหมายต้องเป็นสาธารณะของโดเมน เช่น คุณตั้งค่า ACL เป็น DOMAIN_PUBLIC_ACL ได้
  • หลีกเลี่ยงการตั้งค่าในไฟล์การกำหนดค่าที่ลบล้างการตั้งค่านี้ เช่น defaultAcl.mode=FALLBACK หรือ defaultAcl.public=true

กำหนดคำพ้องความหมายเฉพาะแอปพลิเคชันการค้นหา

หากต้องการระบุคำพ้องความหมายเฉพาะทีม (เช่น สำหรับทีมวิศวกรรมเทียบกับทีมขาย) ให้จัดทำดัชนีคำพ้องความหมายแต่ละคำด้วย _onlyApplicableForAttachedSearchApplications=true ซึ่งจะจำกัดคำพ้องความหมายไว้เฉพาะแอปพลิเคชันการค้นหาที่มีแหล่งข้อมูลที่เฉพาะเจาะจง

ตัวอย่าง

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);