2014-11-07 2 views
0

Есть ли способ создать индекс в SOLR для частичного содержимого поля?Как индексировать содержимое частичного поля в solr

Например предположим, что мы имеем поле, как это:

<field name="document_text"><![CDATA[ 
<h1>This is my title</h1> 
<p>This is document content</p> 
]] </field> 

и мы хотим создать и индекс только <h1> содержания тега.

Я посмотрел директиву <copyField>, но полезен только для объединения нескольких полей в один индекс.

Я не нашел способ сделать это изначально в SOLR.

ответ

1

В зависимости от того, насколько хорошо сформирован вход, вы можете применить директиву copyField к полю, определенному с помощью PatternReplaceCharFilter, в качестве первого фильтра вместе с регулярным выражением, удаляющим все, что не заключено в теги. В то время как разбор HTML с регулярными выражениями обычно является плохой идеей, в этом случае он, вероятно, будет работать «достаточно хорошо».

Вы также можете применить цепочку UpdateProcessor при индексировании, где у вас может быть более обширный код, который делает извлечение XPath или другой синтаксический анализ HTML - в зависимости от того, как вы пишете эту цепочку.

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