進階搜尋

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

自訂同義詞

Document AI Warehouse 提供「自訂同義詞」功能,可讓客戶為特定領域提供自己的同義詞。顧名思義,同義詞是指搜尋時使用的相似字詞。如果使用者搜尋「電視」,系統可以順暢地加入下列同義詞,使用者不會察覺:「電視」、「視訊監視器」、「視訊螢幕」。系統會使用使用者原始搜尋字詞和同義詞執行搜尋查詢。

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

Synonym、Context 和 SynonymSet

Document AI Warehouse 導入了三個自訂同義詞的主要詞彙:

  • Synonym。同義詞代表一組意思相近的字詞。

  • Context。情境代表一組使用者 (例如產業、部門或組織使用者),他們有其他群組不使用的特定同義詞。舉例來說,財務和醫療照護部門可能使用完全不同的SynonymSet。您可以在 Search API 的 queryContext 欄位中指定情境。因此,即使搜尋查詢字詞相同,使用不同的情境可能會產生不同的搜尋結果。

  • SynonymSet。SynonymSet 是特定情境的同義詞集合。

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

用途範例

SynonymSet 搭配情境:「finance」

"Currency","Foreign exchange","dollar","euro"​​,"yen"
"Inflation","CPI","economic expansion","economic boom","higher prices"
"IRS","Internal Revenue Service","US Treasury"
"Tax return","1040","1120","1099","W-2"

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

SynonymSet 搭配情境:「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"
        }
      }
    ]
  }

後續步驟