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

Các tổ chức thường sử dụng thuật ngữ riêng biệt hoặc sử dụng 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 các từ đồng nghĩa để thiết lập tương đương với các cụm từ 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 có _dictionaryEntry phổ biến giản đồ.

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 định nghĩa. Giá trị đề xuất là những từ hoặc cụm từ không được chèn dấu gạch nối và không có dấu câu. Bắt buộc
_synonym string (repeated) Các cụm từ thay thế sẽ được đưa vào truy vấn phù hợp với chuỗi được định nghĩa 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 bài viết Xác định từ đồng nghĩa cụ thể cho nguồn dữ liệu. Không bắt buộc

Khi người dùng đưa giá trị của thuộc tính _term vào một truy vấn, cụm từ tìm kiếm có hiệu lực sẽ trở thành "từ đồng nghĩa HOẶC từ ngữ có hiệu lực". Ví dụ: nếu cụm từ "scifi" được định nghĩa với từ đồng nghĩa "science fiction" rồi truy vấn chứa từ "scifi" 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 hai chiều. Nếu truy vấn thay thế cho Tìm kiếm trên đám mây "science fiction," không áp dụng bất kỳ từ đồng nghĩa nào cho truy vấn. Truy vấn chỉ khớp với các mục có chứa "science fiction." mục có chứa Đã bỏ qua "scifi".

Để làm cho tất cả các thuật ngữ có thể thay thế cho nhau, hãy xác định riêng từng thuật ngữ:

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 nối và các dấu câu khác sẽ bị xóa trước vào việc áp dụng các từ đồng nghĩa. Truy vấn của người dùng "sci-fi" khớp với _term "sci fi." Để tạo từ đồng nghĩa cho những cụm từ có thể bị người dùng gạch nối, trước tiên hãy chuẩn hoá _term để sử dụng khoảng trắng thay vì dấu gạch nối.

Tiếp tục ví dụ, các định nghĩa sau đây khớp với các truy vấn của người dùng "sci-fi," "sci fi," "scifi,""science fiction" 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, các từ đồng nghĩa trong bất kỳ nguồn dữ liệu nào cũng áp dụng trên toàn bộ miền. Cụ thể, các từ đồng nghĩa được áp dụng trong các ứng dụng tìm kiếm đối với tất cả các cụm từ tìm kiếm bất kể nguồn dữ liệu là gì. Nếu bạn muốn có các từ đồng nghĩa cụ thể cho nguồn dữ liệu, hãy tham khảo để Xác định các từ đồng nghĩa cụ thể cho nguồn dữ liệu.

Xác định các từ đồng nghĩa chung bằng Cloud Search SDK

Bạn có thể sử dụng SDK Trình kết nối nội dung để xác định các cụm từ và từ đồng nghĩa của chúng. Xem Tạo trình kết nối nội dung cho hướng dẫn xây dựng trình kết nối.

Đoạn mã sau minh hoạ việc tạo RepositoryDoc trình bày 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();
}

Lưu ý những điều sau đây khi xác định các từ đồng nghĩa:

  • Các mục từ đồng nghĩa phải được đặt ở chế độ công khai trong miền. Trong ví dụ trước, điều 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 của mình vì chúng ghi đè cài đặt miền công khai trong mã của bạn:
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

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

Theo mặc định, các từ đồng nghĩa được áp dụng cho tất cả các nguồn dữ liệu trên tất cả các cụm từ 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à bán hàng riêng biệt và bạn muốn cung cấp cho mỗi nhóm trải nghiệm tìm kiếm khác nhau, bao gồm từ đồng nghĩa theo vai trò công việc cụ thể. Trong trường hợp này, bạn có thể tạo một cụm từ tìm kiếm có nguồn dữ liệu cụ thể về kỹ thuật và các từ đồng nghĩa với nguồn dữ liệu bán hàng cụ thể và các từ đồng nghĩa. Để hoàn thành mục tiêu này, lập chỉ mục từng từ đồng nghĩa trong một nguồn dữ liệu cụ thể đang sử dụng _onlyApplicableForAttachedSearchApplications=true. Chiến dịch này chế độ cài đặt giới hạn các từ đồng nghĩa để chúng chỉ được áp dụng cho cụm từ tìm kiếm bao gồm một nguồn dữ liệu cụ thể.

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

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);