IBM Cloud Docs
如何处理数据

如何处理数据

连接到数据源时,Discovery 处理 数据源中的信息以创建 集合

处理数据源的目标是识别有意义的信息并在将其添加到集合时对其进行标记,以便以后更容易查找和检索信息。

应用于所有数据源的处理包括以下步骤:

  • 识别数据源中的各个文档
  • 在文档中查找字段
  • 对字段建立索引

您可以在“管理字段”页面中查看已建立索引的字段的列表。

  1. 转至“管理集合”页面,然后选择集合。

    确保先完成集合的处理。 “活动”页面显示处理状态。

  2. 点击 “管理字段”选项卡。

所显示的字段可能根据您的数据而有所不同。 但是,始终会列出一个字段子集。 这些具有名称 (例如 footerheader) 的字段派生自“智能文档理解”(SDU) 工具,即使您未将 SDU 模型显式应用于集合,也会列出这些字段。 (有关 SDU 生成的字段的完整列表,请参阅 可用字段。) 只有指定了数据类型的字段才会存储在集合的索引中。

存储在索引中的其中一个 SDU 生成的字段是 text 字段。 text 字段通常包含原始文档中的文本主体。 从“改进和定制”页面提交的搜索结果中返回的大部分内容源自此一个字段。 如何仅解析和返回此字段中的相关信息块由项目所使用的查询结果配置确定。 有关更多信息,请参阅 预览缺省查询结果

更多处理将添加更多字段。 并且根据项目类型自动应用更多处理。 当进程在集合中的文档上运行时,将添加额外的字段以存储与该进程相关联的信息。 例如,当内置“实体”扩充项应用于集合时,它将启动一个进程,该进程将名称以 enriched_{field_name}.entities 开头的字段添加到集合中的文档。

  • 有关缺省情况下应用的扩充项的更多信息,请参阅 缺省项目设置

如何处理字段

对于大多数非结构化文件类型,会将文件中的大量内容添加到名为 text 的字段中。 对于具有固有数据结构的文件类型 (例如,JSON 文件),将使用源文件中的名称来命名存储内容的字段。 上载此类型的文件时,请注意字段存在的一些命名限制。

以下字段名称具有特殊含义。 如果可能,请勿在结构化源文件中使用这些名称。

  • document_id
  • highlight
  • html
  • metadata
  • parent_document_id
  • result_metadata
  • score
  • spans

避免使用符合以下条件的字段名称。 不查询具有这些受限字符的字段名称。

  • 以字符 _+- 开头。 例如,+extracted-content
  • 包含字符 .,#?(): 或空格。 例如,extracted contentnew:extracted-content
  • 以数字结尾,例如,extracted-content2

要处理 Discovery中的文档,集合中的所有文档对于特定字段必须具有相同的数据类型。 当特定字段的数据类型因文档而异时,字段索引过程将失败,并且将在集合的“活动”页面的 警告和错误概览 部分中显示失败的索引错误消息。

HTML 字段

文档索引中的 html 字段存储有关文档的结构信息。

  • 如果使用“智能文档理解”工具对集合进行注释,那么将在 html 字段中对文档表示建立索引。
  • 如果使用“智能文档理解”工具将预先训练的模型应用于集合,那么将在 html 字段和 text 字段中对文档表示建立索引。
  • html 字段具有大小限制。 有关更多信息,请参阅 字段限制

有关增强数据的说明:

  • 如果要应用可理解文档中表的扩充项,那么文档必须包含 html 字段。

如何处理日期

不同文件类型以不同方式捕获日期。

未结构化文件

从具有非结构化数据的文档主体捕获日期信息的最佳方法是使用自然语言处理模型扩充。 例如,预构建的“实体”扩充项可识别日期,并在 text 字段 (或具有 String 数据类型的其他主体字段) 中对其进行注释。 在应用了扩充项的文档中,您可以通过查找标注为 enriched_{fieldname}.entities.type=Date 的字段来查找日期。

Dates from metadata date fields, such as extracted_metadata.publicationdate, are stored in the index as dates as long as the date format matches one of the supported date data type formats. You can't see nested fields from the Manage fields page. And when you view a search result as JSON, date field values are displayed as string values because the JSON editor shows the date as a string. However, values from date fields behave like dates. You can use greater than (>) or less than (<) operators with such fields in Discovery Query Language queries, for example.

结构化文件

导入的结构文件 (例如 CSV 或 JSON 文件) 可能包含要存储为日期数据类型的日期字段。Discovery 可以识别许多日期格式。 但是,您可能需要向列表添加格式。 有关更多信息,请参阅 日期格式设置

日期格式设置

如果文档中包含具有日期信息的根级别字段,那么可以将该字段设置为索引中的 Date 数据类型字段。

Discovery 可自动识别以下日期格式:

yyyy-MM-dd'T'HH:mm:ssZ
yyyy-MM-dd'T'HH:mm:ssXXX
yyyy-MM-dd'T'HH:mm:ss.SSSZ
yyyy-MM-dd'T'HH:mm:ss.SSSX
yyyy-MM-dd
M/d/yy
yyyyMMdd
yyyy/MM/dd

如果以其他格式存储日期,那么可以将该格式添加到受支持格式的列表中。

要添加更多日期格式,请完成以下步骤:

  1. 在集合的“管理字段”页面中,将格式添加为 日期格式 字段中的新行。

    指定 Java SimpleDateFormat 类支持的日期格式。

    例如,如果记录仅存储日期的年份值,请将 yyyy 添加到受支持的日期格式列表。 然后,可以将包含年份值的字段的数据类型设置为 日期,并重新处理集合。 因此,日期字段中出现的 2019 在索引中存储为 2019-01-01T05:00:00Z

    添加日期格式时,必须指定日期的关联时区。

  2. 指定时区。

  3. (可选) 选择日期语言环境。

    您选择的语言环境用于解析表示日期类型数据集字段的日期的字符串值。 例如,使用 EEE, MM dd, yyyy 格式,英语(美国)区域设置可以解析 "Wednesday, 07 01, 2020" 的字符串值,而日语(日本)区域设置可以解析 "水曜日, 07 01, 2020" 的相同字符串值。

  4. 如果已导入日期格式无法识别的文档,请重新处理这些文档。

Discovery 无法将文本字段中提及的日期作为 日期 字段存储在索引中。 但是,可以使用诸如 实体 扩充项之类的扩充项来标识文本中提及的日期。

如何处理文件类型

上载文档时,将对文件中的数据建立索引。 Discovery以不同方式处理不同的文件类型。

CSV 文件

有关添加数据的注释:

  • CSV 文件中定义的每一行都将作为单独的文档添加到索引中,每一行都具有相同的 parent_document_id

    子文档通常具有语法为 {parent-ID}_n 的文档标识,其中 {parent-ID} 是添加的原始文件的文档标识,n 是序号。 例如,如果上载包含 5 行的 CSV 文件,那么会将五个文档添加到具有文档标识 (例如,f5214225c1e03e25190ffcdfad8e84ff_0f5214225c1e03e25190ffcdfad8e84ff_4) 的集合中。

  • 不能对 CSV 文件启用“光学字符识别”(OCR) 功能。

  • 如果 CSV 文件具有标题,那么将使用标题名称来命名存储相应列中内容的字段。 请勿使用在 Discovery中具有特殊含义的名称。 请确保字段名称符合命名规则,例如没有空格和附加数字。 例如,在添加文件之前,可以将 start date 头重命名为 start_date,并将 label1 重命名为 label-one。 有关更多信息,请参阅 如何处理字段

  • 当 CSV 文件头名称包含受限字符时,文档转换器会在将生成的字段添加到索引时自动从字段名称中除去受限字符。

有关增强数据的说明:

  • 不能将预先构建或用户训练的“智能文档理解”模型应用于 CSV 文件。

HTML 文件

如果上载 HTML 文件或使用 HTML 文件 (例如 Web 站点) 搜寻数据源,那么将生成 html 字段以及 text 字段。 有关更多信息,请参阅 HTML 字段

JSON 文件

有关添加数据的注释:

  • 源 JSON 文件中的对象名用于命名存储内容的字段。 请勿使用在 Discovery中具有特殊含义的名称。 请确保这些名称符合命名规则,例如没有空格和附加数字。 例如,在添加文件之前,可以将 updated on 对象重命名为 updated_on,将 answer2 重命名为 answer-two。 有关更多信息,请参阅 如何处理字段

  • 如果根级别字段是数组,但不包含任何项,那么将从索引中省略该字段。

  • 如果根级别字段是数组且仅包含一项,那么数组将作为一项的数据类型建立索引。 例如,具有一个字符串的字符串数组将作为字符串建立索引。

  • 如果嵌套字段包含数组,即使数组只有一个值,也会将其作为数组建立索引。

  • 如果根级别字段是数组并且包含多个项,那么会将数据作为数组建立索引。

  • 如果复制由 Discovery 生成的 JSON,然后将其上载为 JSON 文件,请首先从该文件中除去这些系统生成的字段: document_idparent_document_idfilenametitle

  • 不能对 JSON 文件启用光学字符识别 (OCR) 功能。

  • 如果源文档具有名为 document_id 的字段,那么将跳过该字段,并且不会将其添加到集合中的索引。

    如何通过 API 的 2023-03-31 版本更新来处理 JSON 文件中的 document_id 字段。 在更新之前,从产品用户界面上载 JSON 文件或使用 API 通过 添加文档 方法添加该文件时,该文件的 document_id 字段中的值在查询结果中显示为 document_id 值。 但是,为其分配了另一个文档标识,并将其存储在 parent_document_id 字段中。 指定的文档ID是您调用 List documents方法时返回的,并且必须作为 document_id 用于端点 URL 中的Delete document方法请求。 当您使用 更新文档 方法来分配新的 document_id 时,将继续在查询结果中返回原始标识。 但是,必须使用分配的标识来删除文档。 如果您有依赖于先前行为的应用程序,那么可以在 API 调用中指定早于 2023-03-31 的版本号,例如 2020-08-30

有关增强数据的说明:

  • 无法将预构建或用户训练的“智能文档理解”模型应用于 JSON 文件。

  • 将扩充应用于 JSON 文件中的字段时,字段数据类型将转换为数组。 即使字段包含单个值,也会将其转换为数组。 例如,"field1": "Discovery" 变为 "field1": ["Discovery"]。

  • 将仅扩充 JSON 文件中定制字段的前 50,000 个字符。

  • 在自动应用 词性 (POS) 扩充项的项目类型中,扩充项将应用于包含添加到集合的第一个 JSON 文件中的大量文件内容的字段。 此字段由以下规则确定:

    • 如果字段名为 text,那么将对其应用 POS 扩充项。
    • 选择具有最长字符串值和最大相异值数的字段。
    • 如果多个字段满足先前条件,那么将随机选择其中一个字段。
  • 如果要将扩充项应用于嵌套字段,那么必须创建内容挖掘项目,然后将扩充项应用于该字段。 如果要使用除“内容挖掘”以外的项目类型,那么可以在其他位置复用使用“内容挖掘”项目类型创建的集合。 有关更多信息,请参阅 应用扩充项

您可以在 API 的 更新集合 方法中指定 normalizationsconversions 对象,以移动或合并 JSON 字段。

如何派生段落

Discovery 使用复杂的算法从查询返回的所有文档中确定文本的最佳段落。 缺省情况下,将针对每个文档返回段落。 它们在每个文档查询结果中显示为一个部分,并按段落相关性排序。

Discovery 使用语句边界检测来选取包含完整语句的段落。 它搜索长度大约为 200 个字符的段落,然后查看长度为该长度两倍的内容块以查找包含完整句子的段落。 语句边界检测适用于所有支持的语言,并使用特定于语言的逻辑。

对于除 对话式搜索之外的所有项目类型,您可以从“定制显示> 搜索结果”页面更改段落在搜索结果中的显示方式。 例如,您可以配置每个文档显示的段落数以及每个段落的最大字符大小。