Tablestore Go SDK を使用して、Text 型のフィールドからテキストのフラグメントを返し、一致したタームをハイライトします。
前提条件
開始する前に、次の準備を完了してください。
-
Tablestore Go SDK をインストールし、クライアントを初期化します。
-
検索インデックスを作成する際に、Text 型のフィールドに対して EnableHighlighting を有効にします。 詳細については、「検索インデックスの作成」をご参照ください。
説明
概要とハイライトは、一致した Text 型のフィールドからフラグメントを抽出し、設定したタグで一致したタームをハイライトします。 Tablestore Go SDK は、ターム、ターム (複数)、プレフィックス、ワイルドカード、レンジ、ブール、コンスタントスコア、マッチ、Match Phrase、および Nested クエリ (InnerHits を使用) のハイライトをサポートしています。
MatchQueryまたはMatchPhraseQueryを使用する場合、一致したタームが複数の pre-tags と post-tags のペアで囲まれることがあります。Text型のフィールドで最大セマンティック形態素解析が使用されている場合、MatchPhraseQueryは概要とハイライトをサポートしません。フラグメントの境界によって、一致したタームが分割される場合があります。 この場合、そのタームはハイライトされません。
highlight := search.NewHighlight().
AddFieldHighlightParameter(
"title",
search.NewHighlightParameter().
SetNumberOfFragments(3).
SetPreTag("<em>").
SetPostTag("</em>"),
)
searchQuery := search.NewSearchQuery().
SetQuery(&search.MatchQuery{FieldName: "title", Text: "go search"}).
SetHighlight(highlight)
response, err := client.Search(&tablestore.SearchRequest{
TableName: "example_table",
IndexName: "example_index",
SearchQuery: searchQuery,
})
if err != nil {
log.Fatal(err)
}
for _, hit := range response.SearchHits {
fmt.Println(hit.HighlightResultItem)
}
パラメーター
ハイライト設定
|
名前 |
型 |
説明 |
|
FieldHighlightParameters (必須) |
map[string]*search.HighlightParameter |
フィールド名とハイライトパラメーター間のマッピング。 フィールドの概要とハイライトが有効であり、かつサポートされているクエリ条件で使用されている必要があります。 それ以外の場合、そのフィールドに対してハイライトされたフラグメントは返されません。 |
|
HighlightEncoder (任意) |
*search.HighlightEncoder |
元のフラグメントテキストのエンコード方式。 有効値:
|
フィールドハイライトパラメーター
|
名前 |
型 |
説明 |
|
NumberOfFragments (任意) |
*int32 |
返されるフラグメントの最大数。 推奨値:1。 |
|
FragmentSize (任意) |
*int32 |
各フラグメントのターゲット長。 デフォルト値:100。 実際のフラグメント長は異なる場合があります。 |
|
PreTag (任意) |
*string |
一致したタームの前に挿入されるタグ。 デフォルト値: |
|
PostTag (任意) |
*string |
一致したタームの後に挿入されるタグ。 デフォルト値: |
|
HighlightFragmentOrder (任意) |
*search.HighlightFragmentOrder |
フラグメントのソート順序。 TextSequence は、ソーステキスト内の位置によってフラグメントをソートします (デフォルト)。 Score は、マッチスコアによってフラグメントをソートします。 |
レスポンス
ハイライトを設定した後、SearchResponse.SearchHits[].HighlightResultItem.HighlightFields からフィールドのフラグメントを読み取ります。 Nested クエリの場合、ハイライト結果は SearchInnerHits のヒットから読み取ります。