>  기사  >  백엔드 개발  >  elasticsearch - es-php 또는 mmanos/laravel-search의 문제를 강조하는 쿼리 결과에 대해 아는 사람이 있습니까?

elasticsearch - es-php 또는 mmanos/laravel-search의 문제를 강조하는 쿼리 결과에 대해 아는 사람이 있습니까?

WBOY
WBOY원래의
2016-08-04 09:21:421435검색

다음 코드는 laravel elastisearch-php(https://github.com/elastic/elasticsearch-php)로 구현되었지만 강조 표시된 콘텐츠를 반환할 수 없습니다. https://segmentfault.com/에서 온라인으로 읽었습니다. a/1190000003010186 아래에 하이라이팅의 예가 있는데, mmanos는 이를 잘 활용하지 못합니다. 예를 들어 특정 인덱스 아래에서 특정 타입의 쿼리를 찾는 방법은 무엇일까요?
위 방법으로 문제가 해결되지 않으면 친구가 조언을 해줄 수 있나요? 감사합니다! ! !

<code>        $params=[
            'index' => 'n_index',
            'type' => 'n_type',
            'body' => [
                'query' => [
                    'match' => ['ntitle' => '要查询的词']
                ],
                'highlight'=>[
                    'pre_tags'=>['<tag1>', '<tag2>'],
                    'post_tags'=>['</tag1>', '</tag2>'],
                    'fields'=>[
                        'ntitle'=>[]
                    ]
                ]
            ]
        ];

        $response = $this->client->search($params);
    
        echo "<pre class="brush:php;toolbar:false">";
        var_dump($response);
        echo "
";

위 코드를 사용하면 다음과 같은 결과를 얻을 수 있습니다

<code>array(4) {
  ["took"]=>
  int(6)
  ["timed_out"]=>
  bool(false)
  ["_shards"]=>
  array(3) {
    ["total"]=>
    int(5)
    ["successful"]=>
    int(5)
    ["failed"]=>
    int(0)
  }
  ["hits"]=>
  array(3) {
    ["total"]=>
    int(3)
    ["max_score"]=>
    float(1.8223838)
    ["hits"]=>
    array(3) {
      [0]=>
      array(5) {
        ["_index"]=>
        string(7) "n_index"
        ["_type"]=>
        string(6) "n_type"
        ["_id"]=>
        string(1) "6"
        ["_score"]=>
        float(1.8223838)
        ["_source"]=>
        array(1) {
          ["ntitle"]=>
          string(35) "ntitle内容2"
        }
      }
      [1]=>
      array(5) {
        ["_index"]=>
        string(7) "n_index"
        ["_type"]=>
        string(6) "n_type"
        ["_id"]=>
        string(1) "7"
        ["_score"]=>
        float(1.2087858)
        ["_source"]=>
        array(1) {
          ["ntitle"]=>
          string(35) "ntitle内容1"
        }
      }
      [2]=>
      array(5) {
        ["_index"]=>
        string(7) "n_index"
        ["_type"]=>
        string(6) "n_type"
        ["_id"]=>
        string(1) "5"
        ["_score"]=>
        float(0.23033649)
        ["_source"]=>
        array(1) {
          ["ntitle"]=>
          string(35) "ntitle内容3"
        }
      }
    }
  }
}</code>

하이라이트는 반환되지 않습니다.

답글 내용:

다음 코드는 laravel elastisearch-php(https://github.com/elastic/elasticsearch-php)로 구현되었지만 강조 표시된 콘텐츠를 반환할 수 없습니다. https://segmentfault.com/에서 온라인으로 읽었습니다. a/1190000003010186 아래에 하이라이팅의 예가 있는데, mmanos는 이를 잘 활용하지 못합니다. 예를 들어 특정 인덱스 아래에서 특정 타입의 쿼리를 찾는 방법은 무엇일까요?
위 방법으로 문제가 해결되지 않으면 친구가 조언을 해줄 수 있나요? 감사합니다! ! !

<code>        $params=[
            'index' => 'n_index',
            'type' => 'n_type',
            'body' => [
                'query' => [
                    'match' => ['ntitle' => '要查询的词']
                ],
                'highlight'=>[
                    'pre_tags'=>['<tag1>', '<tag2>'],
                    'post_tags'=>['</tag1>', '</tag2>'],
                    'fields'=>[
                        'ntitle'=>[]
                    ]
                ]
            ]
        ];

        $response = $this->client->search($params);
    
        echo "<pre class="brush:php;toolbar:false">";
        var_dump($response);
        echo "
";

위 코드를 사용하면 다음과 같은 결과를 얻을 수 있습니다

<code>array(4) {
  ["took"]=>
  int(6)
  ["timed_out"]=>
  bool(false)
  ["_shards"]=>
  array(3) {
    ["total"]=>
    int(5)
    ["successful"]=>
    int(5)
    ["failed"]=>
    int(0)
  }
  ["hits"]=>
  array(3) {
    ["total"]=>
    int(3)
    ["max_score"]=>
    float(1.8223838)
    ["hits"]=>
    array(3) {
      [0]=>
      array(5) {
        ["_index"]=>
        string(7) "n_index"
        ["_type"]=>
        string(6) "n_type"
        ["_id"]=>
        string(1) "6"
        ["_score"]=>
        float(1.8223838)
        ["_source"]=>
        array(1) {
          ["ntitle"]=>
          string(35) "ntitle内容2"
        }
      }
      [1]=>
      array(5) {
        ["_index"]=>
        string(7) "n_index"
        ["_type"]=>
        string(6) "n_type"
        ["_id"]=>
        string(1) "7"
        ["_score"]=>
        float(1.2087858)
        ["_source"]=>
        array(1) {
          ["ntitle"]=>
          string(35) "ntitle内容1"
        }
      }
      [2]=>
      array(5) {
        ["_index"]=>
        string(7) "n_index"
        ["_type"]=>
        string(6) "n_type"
        ["_id"]=>
        string(1) "5"
        ["_score"]=>
        float(0.23033649)
        ["_source"]=>
        array(1) {
          ["ntitle"]=>
          string(35) "ntitle内容3"
        }
      }
    }
  }
}</code>

하이라이트는 반환되지 않습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.