1. ホーム
  2. elasticsearch

[解決済み] Elasticsearchにおけるハイライト

2022-02-19 13:44:40

質問

これは私のelasticsearchクエリです。

GET indexname/_search
{

    "fields": ["_id", "url","T"],
    "query" : {
     "bool": {"should": [
       {"simple_query_string": {
         "query": "white",
         "fields": ["T", "content"]
       }}
     ]}
    },
    "highlight" : {
      "pre_tags": ["<b>"], 
      "post_tags": ["</b>"], 
        "fields" : {
            "content" : {"fragment_size" : 150, "number_of_fragments" : 1}

        }
    }
}  

私の elasticsearch クエリは、フィールド "T" と "content" で白を検索しており、フィールド "content" をハイライトして pre and post タグ b(bold) を挿入しているのですが、これはどうでしょうか? これは、私のクエリの結果です。

"hits": {
    "total": 922,
    "max_score": 2.369757,
    "hits": [
      {
        "_index": "indexname",
        "_type": "Searchtype",
        "_id": "http://www.example.com/de/unternehmenssuche-white-paper",
        "_score": 2.369757,
        "fields": {
          "T": [
            "White Paper Unternehmenssuche"
          ],
          "url": [
            "http://www.example.com/de/unternehmenssuche-white-paper"
          ]
        },
        "highlight": {
          "content": [
            "/Anwendungsbeispiele Ressourcen Blog <b>White</b> Papers in Deutsche Downloads Wiki Unternehmen Vorstellung der Search Executive"
          ]
        }
      }
....
...

ハイライトの結果を次のようにしたい。

"highlight": {
          "content": [
            "<b>...</b> /Anwendungsbeispiele Ressourcen Blog <b>White</b> Papers in Deutsche Downloads Wiki Unternehmen Vorstellung der Search Executive <b>...</b>"
          ]
        }

を追加したい。 <b>...</b> ハイライトコンテンツの前後に 結果をこのように表示するには、elasticsearchクエリに何を追加すればよいのでしょうか?ご教示いただければ幸いです。

解決方法は?

コメントにも書きましたが、これはElasticsearchではできないと思います。Highlighterはマッチした単語をハイライトするだけで、それ以上の後処理は行いません。 Elasticsearch 2.3 のドキュメント を作ることができるかもしれません。)

とにかく、私の論理的なアプローチとしては <b>...</b> タグは、HTML コードをレンダリングするときに使用します。

{{ foreach hit in hits }}
<b>...</b> hit[content] <b>...</b>
{{ endfor }}

このようなもので、お使いのテンプレートに合わせて変更してください。