高级搜索

本部分将讨论搜索功能的更多细微之处和高级主题。

自定义同义词

Document AI Warehouse 提供了一项名为“自定义同义词”的功能,可让客户为其特定领域提供自己的同义词。同义词顾名思义,是指在搜索时使用的类似字词。如果用户搜索“电视”,系统可以无缝添加以下同义词,而无需用户知晓:“TV”“视频显示器”“视频屏幕”。系统将使用用户的原始搜索字词和同义词来执行搜索查询。

此功能有助于扩展用户的搜索范围并返回预期结果。典型用法包括公司或行业术语、首字母缩写词、行话和俗语。

同义词、上下文和 SynonymSet

Document AI Warehouse 引入了三个用于同义词自定义的主要术语:

  • Synonym同义词表示一组含义相似的字词。

  • Context上下文表示一组具有特定同义词的用户(例如行业、部门或组织用户),这些同义词不会被其他群组使用。例如,财务部门和医疗保健部门可能使用完全不同的 SynonymSet。可以在 Search API 的 queryContext 字段中指定上下文。因此,针对同一搜索查询字词使用不同的上下文可能会产生不同的搜索结果。

  • SynonymSetSynonymSet 是特定上下文的同义词集合。

{
  "name": string,
  "context": string,
  "synonyms": [
    {
      object (Synonym)
    }
  ]
}

用例示例

具有“finance”上下文的 SynonymSet

“货币”“外汇”“美元”“欧元”“日元”
“通货膨胀”“消费者价格指数”“经济扩张”“经济繁荣”“物价上涨”
"IRS","Internal Revenue Service","US Treasury"
“纳税申报表”“1040”“1120”“1099”“W-2”

在上述示例中,当用户查询“Currency”且 queryContext 为“finance”时,该行中的其他同义词(即“Foreign exchange”“dollar”“euro”“yen”)会隐式添加到搜索查询中。同样,如果用户查询该行中的任何字词,系统会将所有其他字词添加到最终查询中。沿用上面的示例,如果用户查询“欧元”,则最终查询中会添加“货币”“外汇”“美元”和“日元”。

具有“医疗保健”上下文的 SynonymSet

“提供方”“诊所”“医院”“医生”“治疗师”“专科医生”
"医疗索赔","索赔","1500","诊断","ICD-9","ICD9","ICD-10","ICD10","CPT","HCPCS"
"injury","trauma","hurt","wound","sore","bruise","cut","laceration","lesion","abrasion","contusion"

使用自定义同义词扩展功能进行搜索

如果客户想要通过自定义同义词扩展来搜索文档,则需要指定一个或多个 query_context,您可以查看 SearchDocuments API 中的文档。

顾名思义,folder search 仅在特定文件夹及其子文件夹中进行搜索。

搜索请求示例如下所示:

  {
    document_query {
      query: "songs";,
      folderNameFilter: "projects/PROJECT_NUM/locations/LOCATION/documents/888"
    }
  }

直方图

直方图是一项高级功能,可汇总指定数据的数量。例如,每种架构有多少个文档与用户的查询匹配?对于政府相关数据库,如果用户搜索“Orange County”,数据架构直方图可能会返回符合搜索条件的驾照、结婚证或契据的数量。直方图会遵循请求用户的相应数据访问权限,因此只会统计请求用户有权访问的文档。

直方图可能是一种强大的资源;不过,收集和汇总所有数据需要时间。

直方图不受搜索请求的分页字段的影响。

一般直方图查询格式

HistogramQuery 的定义如下:

{
  "histogramQuery": string,
  "requirePreciseResultSize": boolean,
  "filters": {
    object (HistogramQueryPropertyNameFilter)
  }
}

histogram_query 字段的格式为:COUNT('<item to count>')。此字段是重复字段,可让您包含多个直方图查询。

require_precise_result_size 字段未实现。

filters 字段在过滤条件部分中进行了讨论。

文档架构直方图

您可以通过添加以下直方图查询来创建文档架构或文档类型直方图:

  {
    document_query {
      query: "test"
    },
    histogram_queries: [
      {
        histogram_query: "count('DocumentSchemaId')"
      }
    ]
  }

例如,此查询的 HistogramQueryResult 中的映射将如下所示:

  histogramQueryResults: [
    {
      histogramQuery: "DocumentSchemaId",
      histogram:
        {
          "projects/1234/locations/us-west/documentSchemas/5543": "22",
          "projects/1234/locations/us-west/documentSchemas/5544": "2",
          "projects/1234/locations/us-west/documentSchemas/5545": "4",
          "projects/1234/locations/us-west/documentSchemas/5546": "122",
          "projects/1234/locations/us-west/documentSchemas/5547": "256",
          "projects/1234/locations/us-west/documentSchemas/5548": "1",
          "projects/1234/locations/us-west/documentSchemas/5549": "5",
          "projects/1234/locations/us-west/documentSchemas/5550": "15",
        }
    }
  ]

此示例显示了三个文档架构与给定的搜索查询相匹配,并显示了每个文档架构的文档数量。

属性直方图

房源直方图显示指定的可过滤属性的计数。属性直方图的格式如下:

  COUNT('SomeSchema.SomeProp')

  // Also, you can try with:

  COUNT('SomeSchema.ParentProp.SubProp')

下面是一个请求示例:

  histogramQueryResults: [
    {
      histogramQuery: "5678.text_prop",
      histogram: {
        some_text: "1",
        More_text: "55",
        Additional_text: "19"
      }
    }
  ]

此直方图会根据 HistogramQueryPropertyNameFilter 标准显示所有可过滤的房源直方图。此函数会返回属性的使用次数(而非值的数量)。

HistogramQueryPropertyNameFilter 的定义如下:

  {
    "documentSchemas": [
      string
    ],
    "propertyNames": [
      string
    ],
    "yAxis": enum (HistogramYAxis)
  }

您可以通过填写名为 document_schemas 的可重复字段(最多 10 个 schema_ID 字段)将结果限制为一组文档架构。可以使用可重复的 property_names 字段来选择性地减少汇总的属性。

y_axis 字段用于确定如何统计媒体资源。如果未设置此属性或将其设置为 HISTOGRAM_YAXIS_DOCUMENT,则直方图功能仅统计唯一属性使用情况。如果 y_axis 设置为 HISTOGRAM_YAXIS_PROPERTY,则直方图会统计所有属性使用情况。例如:

文档 1: Payments_property: [AMEX, VISA]

文档 2: Payments_property: [MC]

`HISTOGRAM_YAXIS_DOCUMENT` would return:
  Payments_property: 2
  _Explanation_: The `Payments_property` is found in two documents

`HISTOGRAM_YAXIS_PROPERTY` would return:
  Payments_property: 3
  _Explanation_: The `Payments_property` has three values in the documents found

下面是一个简单的查询示例:

  {
    document_query {
    },
    histogram_queries: [
      {
        histogramQuery: "count('FilterableProperties')";
      }
    ]
  }

以下是针对上述查询的示例回答:

  histogramQueryResults: [
    {
      histogramQuery: "FilterableProperties",
      histogram: {
        456.int_prop: "4",
        456.text_prop: "26"
      }
    }
  ]

如需按架构过滤 count('FilterableProperties')) 结果,请参阅以下请求:

  {
    document_query: {
    },
    histogram_queries: [
      {
        histogram_query: "count('FilterableProperties')",
        filters: {
          document_schemas: [
            "projects/1234/locations/us-west/documentSchemas/678",
            "projects/1234/locations/us-west/documentSchemas/456"
          ]
        }
      }
    ]
  }

如需按特定属性过滤 count('FilterableProperties') 结果,请参阅以下请求:

  {
    document_query: {
    },
    histogram_queries: [
      {
        histogram_query: "count('FilterableProperties')",
        filters: {
          property_names: [
            "678.MORTAGE_TYPE",
            "456.language_code"
          ]
        }
      }
    ]
  }

如需查看 count("FilterableProperties") 的房源数量,请将 y_axis 更改为 HISTOGRAM_YAXIS_PROPERTY,如下所示:

  {
    document_query: {
    },
    histogram_queries: [
      {
        histogram_query: "count('FilterableProperties')",
        filters: {
          y_axis: "HISTOGRAM_YAXIS_PROPERTY"
        }
      }
    ]
  }

后续步骤