

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# HTML 的表格式搜尋
<a name="searching-tables"></a>

**注意**  
功能支援會因索引類型和正在使用的搜尋 API 而有所不同。若要查看您正在使用的索引類型和搜尋 API 是否支援此功能，請參閱[索引類型](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)。

Amazon Kendra的表格搜尋功能可以從內嵌在 HTML 文件中的資料表搜尋和擷取答案。當您搜尋索引時，如果與查詢相關， 會 Amazon Kendra 包含資料表的摘錄，並提供有用的資訊。

Amazon Kendra 會查看文件內文內文中的所有資訊，包括表格中的實用資訊。例如，索引包含業務報告，其中包含營運成本、收入和其他財務資訊的相關資料表。對於查詢，「2020-2022 的年度操作成本是多少？」， Amazon Kendra 可以從包含相關資料表資料欄「操作 （百萬美元）」和「財務年度」的資料表傳回摘錄，以及包含 2020 年、2021 年和 2022 年收入值的資料表資料列。資料表摘錄包含於結果中，以及文件標題、完整文件的連結，以及您選擇包含的任何其他文件欄位。

無論是在資料表的一個儲存格或多個儲存格中找到資訊，都可以在搜尋結果中顯示資料表摘錄。例如， Amazon Kendra 可以顯示針對以下每種查詢量身打造的資料表摘錄：
+ 「2020 年最高利率信用卡」
+ 「2020-2022 的最高利率信用卡」
+ 「2020-2022 年前 3 名的最高利率信用卡」
+ 「利率低於 10% 的信用卡」
+ 「所有可用的低息信用卡」

Amazon Kendra 會反白顯示與查詢最相關的資料表儲存格。搜尋結果中會顯示最相關的儲存格及其對應的資料列、資料欄和資料欄名稱。資料表摘錄最多顯示五個資料欄和三個資料列，取決於有多少資料表儲存格與查詢相關，以及原始資料表中有多少資料欄可用。最相關的儲存格會顯示在資料表摘錄中，以及下一個最相關的儲存格。

回應包含可信度儲存貯體 (`MEDIUM`、`HIGH`、`VERY_HIGH`)，以顯示資料表答案與查詢的相關性。如果資料表儲存格值為`VERY_HIGH`可信度，則會變成「頂端答案」並反白顯示。對於`HIGH`可信的資料表儲存格值，則會反白顯示。對於`MEDIUM`可信的資料表儲存格值，則不會反白顯示。回應中會傳回資料表答案的整體可信度。例如，如果資料表大部分包含可`HIGH`信度的資料表儲存格，則資料表答案回應中傳回的整體可信度為`HIGH`可信度。

根據預設，資料表的重要性或權重不會高於文件的其他元件。在文件中，如果資料表僅稍微與查詢相關，但有高度相關的段落， 會 Amazon Kendra 傳回該段落的摘錄。搜尋結果會在相同文件或其他文件中顯示提供最佳答案和最有用資訊的內容片段。如果資料表的可信度低於可`MEDIUM`信度，則不會在回應中傳回資料表摘錄。

若要在現有索引上使用表格式搜尋，您必須重新索引內容。

Amazon Kendra 表格式搜尋支援[同義詞](https://docs.aws.amazon.com/kendra/latest/dg/index-synonyms.html) （包括自訂同義詞）。 Amazon Kendra 僅支援具有 HTML 資料表且位於資料表標籤內的英文文件。

下列範例顯示查詢結果中包含的資料表摘錄。若要檢視具有查詢回應的範例 JSON，包括資料表摘錄，請參閱[查詢回應和類型](https://docs.aws.amazon.com/kendra/latest/dg/query-responses-types.html)。

------
#### [ Python ]

```
import boto3
import pprint

kendra = boto3.client("kendra")

# Provide the index ID
index_id = <index-id>
# Provide the query text
query = "search string"

response = kendra.query(
        QueryText = query,
        IndexId = index_id)

print("\nSearch results for query: " + query + "\n")        

for query_result in response["ResultItems"]:

    print("-------------------")
    print("Type: " + str(query_result["Type"]))
    print("Type: " + str(query_result["Format"]))
        
    if query_result["Type"]=="ANSWER" and query_result["Format"]=="TABLE":
        answer_table = query_result["TableExcerpt"]
        print(answer_table)
        
    if query_result["Type"]=="ANSWER" and query_result["Format"]=="TEXT":
        answer_text = query_result["DocumentExcerpt"]
        print(answer_text)
        
    if query_result["Type"]=="QUESTION_ANSWER":
        question_answer_text = query_result["DocumentExcerpt"]["Text"]
        print(question_answer_text)

    if query_result["Type"]=="DOCUMENT":
        if "DocumentTitle" in query_result:
            document_title = query_result["DocumentTitle"]["Text"]
            print("Title: " + document_title)
        document_text = query_result["DocumentExcerpt"]["Text"]
        print(document_text)

    print("------------------\n\n")
```

------
#### [ Java ]

```
package com.amazonaws.kendra;

import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.QueryRequest;
import software.amazon.awssdk.services.kendra.model.QueryResponse;
import software.amazon.awssdk.services.kendra.model.QueryResultItem;

public class SearchIndexExample {
    public static void main(String[] args) {
        KendraClient kendra = KendraClient.builder().build();

        String query = "search string";
        String indexId = "index-id";

        QueryRequest queryRequest = QueryRequest
            .builder()
            .queryText(query)
            .indexId(indexId)
            .build();

        QueryResponse queryResponse = kendra.query(queryRequest);

        System.out.println(String.format("\nSearch results for query: %s", query));
        for(QueryResultItem item: queryResponse.resultItems()) {
            System.out.println("----------------------");
            System.out.println(String.format("Type: %s", item.type()));
            System.out.println(String.format("Format: %s", item.format()));
            
            switch(item.format()) {
                case TABLE:
                    String answerTable = item.TableExcerpt();
                    System.out.println(answerTable);
                    break;
            }

            switch(item.format()) {
                case TEXT:
                    String answerText = item.DocumentExcerpt();
                    System.out.println(answerText);
                    break;
            }

            switch(item.type()) {
                case QUESTION_ANSWER:
                    String questionAnswerText = item.documentExcerpt().text();
                    System.out.println(questionAnswerText);
                    break;
                case DOCUMENT:
                    String documentTitle = item.documentTitle().text();
                    System.out.println(String.format("Title: %s", documentTitle));
                    String documentExcerpt = item.documentExcerpt().text();
                    System.out.println(String.format("Excerpt: %s", documentExcerpt));
                    break;
                default:
                    System.out.println(String.format("Unknown query result type: %s", item.type()));

            }

            System.out.println("-----------------------\n");
        }
    }
}
```

------