Выделение упругого поиска, дающего только результаты - PullRequest
0 голосов
/ 03 января 2019

Работа над Php и Elastic Search 6.5.2. Для тестового сценария я использовал почтальон: когда я применяю выделение, только обрезанный фрагмент контента, который соответствует предложению ключевого слова, отображается, когда я добавил два или более фрагмента под выделением. Я не хочу обрезать контент на уровне упругого поиска. Для этого я изменил количество фрагментов на ноль и получил ожидаемый результат в эластичном поиске, который дает весь контент, но когда я проверяю вывод в php приложении , весь контент становится жирным, когда соответствующее ключевое слово, существующее в поле URL.

Индекс:

PUT test/_doc/1
{
  "title":"Apply For the admissions graduate and undergraduate"
  "url":"https://someurl.com/admissions",
  "content": "Engineers play an important role in almost every aspect of modern life. As an engineer in the 21st century, you’ll work in teams to develop ingenious ways to transform the world in which we live. Industrial engineers are in high demand in nearly every industry. Astounding innovations in semiconductor microelectronic engineering will continue to drive productivity and the economy by playing a key role in a wide range of technologies – information, communication, nanotechnology, defense, medicine, and energy.Admission into the microelectronic engineering program is competitive, but our admission process is a personal one. Each application is reviewed holistically for strength of academic preparation, performance on standardized tests, counselor recommendations, and your personal career interests. We seek applicants from a variety of geographical, social, cultural, economic, and ethnic backgrounds."
}

Запрос:

{
   "query":{
      "query_string":{
         "fields":[
            "content"
         ],
         "query":"admissions"
      }
   },
   "highlight":{
      "fields":{
         "title":{
            "pre_tags":[
               "<strong>"
            ],
            "post_tags":[
               "</strong>"
            ],
            "number_of_fragments":3            //changed to 0 earlier
         },
         "content":{
            "pre_tags":[
               "<strong>"
            ],
            "post_tags":[
               "</strong>"
            ],
            "fragment_size":150,
            "number_of_fragments":3           //changed to 0 earlier
         }
      }
   }
}

Результат:

"highlight": {
          "content": [
            "information, communication, nanotechnology, defense, medicine, and energy.Admission into the microelectronic engineering program is competitive, but our <strong>admission</strong>"
          ]
        }

1 Ответ

0 голосов
/ 09 января 2019

После просмотра кода вы поделились в комментариях.Эта проблема не включена в ответ эластичного поиска.

Следующая строка вызывает проблему:

<?php echo substr($r['highlight']['content'][0],0,300); ?>

Из-за этого отсутствует результат закрытия </b>пометить, как вы берете только первые 300 символов.

Если вы заметили, что видите, одно из выделенного содержимого в вашем html имеет следующее:

Tourism Management Curriculum Capstone/Exam/Thesis Options <b>Admissi</div>

Как видите, закрывающий тег </b>отсутствует для <b>Admissi и, следовательно, все, что после этого выделено жирным шрифтом.

Решением этой проблемы может быть не использование подстроки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...