Định nghĩa từ đồng nghĩa

Một tổ chức thường có thuật ngữ riêng hoặc nhiều cách để đề cập đến một khái niệm hoặc sự vật. Bạn nên xác định từ đồng nghĩa để thiết lập sự tương đương của các cụm từ nhằm giúp người dùng tìm thấy các mặt hàng khi tìm kiếm.

Từ đồng nghĩa được xác định bằng cách lập chỉ mục các mục bằng giản đồ _dictionaryEntry quen thuộc.

Các mục thuộc loại _dictionaryEntry có thể có các thuộc tính sau:

Thuộc tính Loại Mô tả Bắt buộc?
_term string Thuật ngữ cần xác định. Các giá trị được đề xuất là những từ hoặc cụm từ không có dấu gạch ngang và dấu câu. Bắt buộc
_synonym string (repeated) Các cụm từ thay thế sẽ được đưa vào những cụm từ tìm kiếm khớp với chuỗi được xác định trong _term. Bắt buộc
_onlyApplicableForAttachedSearchApplications boolean Cho phép bạn nhóm các từ đồng nghĩa theo nguồn dữ liệu và ứng dụng tìm kiếm. Để biết thêm thông tin, hãy xem phần Xác định từ đồng nghĩa dành riêng cho nguồn dữ liệu. Không bắt buộc

Khi người dùng thêm giá trị của thuộc tính _term vào một cụm từ tìm kiếm, cụm từ tìm kiếm hiệu quả sẽ trở thành "term OR synonyms" (cụm từ hoặc từ đồng nghĩa). Ví dụ: nếu thuật ngữ "scifi" được xác định bằng từ đồng nghĩa "science fiction" thì một cụm từ tìm kiếm chứa từ "scifi" sẽ khớp với các mục chứa "scifi" hoặc "science fiction."

Từ đồng nghĩa không được áp dụng theo cả hai hướng. Nếu cụm từ tìm kiếm là cho "science fiction," Cloud Search, thì cụm từ này sẽ không áp dụng bất kỳ từ đồng nghĩa nào. Cụm từ tìm kiếm chỉ khớp với các mục có chứa "science fiction." Các mục có chứa "scifi" sẽ bị bỏ qua.

Để có thể thay thế cả hai từ, hãy xác định từng từ riêng biệt:

Thuật ngữ Từ đồng nghĩa
scifi science fiction
science fiction scifi

Trong quá trình xử lý truy vấn, dấu gạch ngang và các dấu khác sẽ bị xoá trước khi áp dụng từ đồng nghĩa. Cụm từ tìm kiếm của người dùng "sci-fi" khớp với _term "sci fi." Để tạo từ đồng nghĩa cho những từ mà người dùng có thể gạch ngang, trước tiên, hãy chuẩn hoá _term để sử dụng khoảng trắng thay vì dấu gạch ngang.

Tiếp tục ví dụ này, các định nghĩa sau đây khớp với truy vấn của người dùng, coi "sci-fi," "sci fi," "scifi,""science fiction" là có thể thay thế cho nhau:

Thuật ngữ Từ đồng nghĩa
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

Theo mặc định, từ đồng nghĩa trong mọi nguồn dữ liệu sẽ áp dụng cho toàn bộ miền. Cụ thể, từ đồng nghĩa được áp dụng trên các ứng dụng tìm kiếm cho tất cả các lượt tìm kiếm, bất kể nguồn dữ liệu. Nếu bạn muốn có từ đồng nghĩa dành riêng cho nguồn dữ liệu, hãy tham khảo phần Xác định từ đồng nghĩa dành riêng cho nguồn dữ liệu.

Xác định từ đồng nghĩa toàn cầu bằng Cloud Search SDK

Bạn có thể sử dụng Content Connector SDK để xác định các thuật ngữ và từ đồng nghĩa của chúng. Hãy xem bài viết Tạo trình kết nối nội dung để biết hướng dẫn về cách tạo trình kết nối.

Đoạn mã sau đây minh hoạ cách tạo RepositoryDoc đại diện cho thuật ngữ và từ đồng nghĩa dựa trên bản ghi tệp 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();
}

Khi xác định từ đồng nghĩa, hãy lưu ý những điều sau:

  • Các mục từ đồng nghĩa phải thuộc miền công khai. Trong ví dụ trước, việc này được thực hiện bằng cách đặt ACL thành DOMAIN_PUBLIC_ACL.
  • Bạn không nên xác định các thuộc tính sau cho tệp cấu hình vì chúng sẽ ghi đè chế độ cài đặt công khai của miền trong mã của bạn:
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

Xác định từ đồng nghĩa dành riêng cho ứng dụng tìm kiếm

Theo mặc định, từ đồng nghĩa được áp dụng cho tất cả nguồn dữ liệu trên mọi ứng dụng tìm kiếm.

Tuy nhiên, giả sử tổ chức của bạn có các nhóm kỹ thuật và nhóm bán hàng riêng biệt, đồng thời bạn muốn cung cấp cho mỗi nhóm một trải nghiệm tìm kiếm riêng biệt, bao gồm cả các từ đồng nghĩa dành riêng cho vai trò công việc. Trong trường hợp này, bạn có thể tạo một ứng dụng tìm kiếm có nguồn dữ liệu và từ đồng nghĩa dành riêng cho kỹ thuật và một ứng dụng tìm kiếm khác có nguồn dữ liệu và từ đồng nghĩa dành riêng cho hoạt động bán hàng. Để đạt được mục tiêu này, hãy lập chỉ mục cho từng từ đồng nghĩa trong một nguồn dữ liệu cụ thể bằng cách sử dụng _onlyApplicableForAttachedSearchApplications=true. Chế độ cài đặt này giới hạn từ đồng nghĩa để chỉ áp dụng cho các ứng dụng tìm kiếm có chứa một nguồn dữ liệu cụ thể.

Ví dụ: việc thêm dòng mã sau vào mẫu mã trước đó sẽ đảm bảo các từ đồng nghĩa được lập chỉ mục là dành riêng cho nguồn dữ liệu:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);