Самый простой способ для поиска содержимого HTML в Solr является показателем использования HTMLStripCharFilterFactory. Это разбивает HTML-теги (включая атрибуты) на текст во время индекса, то есть вы можете искать текст, не идя по тегам. Сохраненная версия поля будет содержать теги HTML.
<!-- Field type for HTML fields, stripping HTML characters during indexing -->
<fieldType name="text_html" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Однако, это может привести к подсветке разметке вызывая ваши HTML-теги сломаться, либо появляются в середине HTML-тегов, или вырезания закрывающий теги. Альтернативным решением для этого является удаление HTML-кода перед сохранением в Solr.
Solr не так хорош для поиска данных. Рассматривали ли вы хранение raw html в другом месте, например, в базе данных sql или другом rdbms? Добавляйте текст для поиска в Solr, затем добавляйте идентификатор страницы в документ solr, а затем просматривайте полный html через идентификатор страницы в своем db. –
Основная проблема заключается в том, что я хочу искать ключевые слова, а затем выделять эти ключевые слова в raw html. Это возможно? Например, .
Solr не может делать динамическую вставку html-меток в любом случае, правильно? Не могли бы вы получить полученный исходный HTML-код из своего db, а затем выполнить поиск ключевого слова после факта и вставить html? –