進階搜尋

本節將進一步討論搜尋功能的細微差異和進階主題。

自訂同義詞

Document AI Warehouse 提供「自訂同義字」功能,讓客戶為特定網域提供自己的同義字。同義字顧名思義就是搜尋時使用的類似字詞。如果使用者搜尋「電視」,系統可能會在使用者不知情的情況下,自動加入「TV」、「視訊螢幕」、「視訊畫面」等同義字。系統會使用使用者的原始搜尋字詞和同義詞執行搜尋查詢。

這項功能可擴充使用者的搜尋範圍,並傳回預期結果。常見用途包括公司或產業用語、縮寫、行話和俗語。

同義詞、情境和同義詞集

Document AI 倉儲提供三種同義字自訂功能的主要用語:

  • Synonym同義詞代表一組字詞,其中所有字詞的含義都相似。

  • Context。「脈絡」代表一組使用者 (例如產業、部門或機構使用者),他們有其他群組未使用的特定同義字。舉例來說,財務和醫療保健部門可能使用完全不同的 SynonymSet。您可以在 Search API 的 queryContext 欄位中指定背景資訊。因此,即使使用相同的搜尋查詢字詞,但搜尋結果可能會因情境而異。

  • SynonymSetSynonymSet是特定情境的同義字集合。

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

用途範例

SynonymSet,內容為「finance」

"Currency","Foreign exchange","dollar","euro"​​,"yen"
「通膨」、「消費者物價指數」、「經濟擴張」、「經濟繁榮」、「物價上漲」
"IRS","Internal Revenue Service","US Treasury"
「退稅」、「1040」、「1120」、「1099」、「W-2」

在上述範例中,如果使用者查詢「Currency」,且 queryContext 為「finance」,則該列中的其他同義詞 (即「Foreign exchange」、「dollar」、「euro」、「yen」) 會隱含地新增至搜尋查詢。同樣地,如果使用者查詢該列中的任何字詞,所有其他字詞都會加入最終查詢。以同樣的例子來說,如果使用者查詢「歐元」,則最終查詢會加入「貨幣」、「外匯」、「美元」和「日圓」。

SynonymSet with context: "healthcare"

"provider","clinic","hospital","doctor","therapist","specialist"
「Medical claim」、「Claim」、「1500」、「Diagnosis」、「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,直方圖會計算所有屬性用量。例如:

Document 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"
        }
      }
    ]
  }

後續步驟