2014-09-09 1 views
1

Я использую функцию выделения подсветки SOLR, чтобы установить подсветку в документе, соответствующем запросу.Как обрабатывать теги html в фрагменте выделения в SOLR

Проблема заключается в том, что одно из полей содержит допустимый HTML, но выделение возвращенного фрагмента недействительно HTML, поэтому после разворачивания всей страницы макета страницы.

Для примера запроса field:lucene получить мне этот документ:

<p><a href="/some/link">Here is the discussion, what the difference between SOLR, Elasticsearch and Lucene</a></p>

фрагмент Выделить это Elasticsearch and <em>Lucene</em></a></p>.

Один из вариантов: Я попытался установить размер фрагмента = 0 (вернуть содержимое всего поля), но он может быть очень большим, и мне нужно всего несколько фрагментов для страницы результатов.

Другой вариант - удалить все теги HTML и показать фрагмент в виде обычного текста, но для выделения выделены теги <em>. Также некоторые фрагменты могут быть разбиты на фрагмент, например, </p, что означает, что мы не можем использовать синтаксические анализаторы html для этой цели.

Похоже, что это обычная проблема в поиске, есть ли какой-то современный подход к ее устранению?

ответ

0

Обычным решением является удаление HTML по пути в (например, using the HTMLCharFilter) перед индексированием. Таким образом, вы получите текстовое поле, которое вы можете выделить, и отобразите результат с помощью встроенных тегов <em>.

Вы можете использовать copyField, чтобы иметь поле с отсутствием HTML-представления, а другое без HTML-кода (использовать для выделения).

Смежные вопросы