Удаляет ли HTMLStripCharFilterFactory @ Solr 3.4 HTML-код для возвращаемых полей?

Я использую CF10, который должен использовать Solr 3.4 в соответствии с enterprisezen.com/2013/11/updating-solr-engine-coldfusion. Я добавил <charFilter class="solr.HTMLStripCharFilterFactory"/> в <fieldType name="text">, но поле сводки в результатах поиска по-прежнему включает HTML. Есть идеи, почему?

<field name="summary" type="text" indexed="false" stored="true" required="false" />

http://localhost:8985/solr/test/admin/schema.jsp показывает:

Поле: сводка Тип поля: ТЕКСТ

Свойства: токенизированные, хранимые

Схема: токенизированная, хранимая

Разрыв приращения позиции: 100

Анализатор индекса: org.apache.solr.analysis.TokenizerChain ДЕТАЛИ

Фильтры символов:

org.apache.solr.analysis.HTMLStripCharFilterFactory args: {luceneMatchVersion: LUCENE_24} Класс токенизатора: org.apache.solr.analysis.WhitespaceTokenizerFactory

Фильтры:

org.apache.solr.analysis.StopFilterFactory, аргументы: {words: stopwords.txt ignoreCase: true enablePositionIncrements: true luceneMatchVersion: LUCENE_24} org.apache.solr.analysis.WordDelimiterFilterFilterFactory args: {splitOntcasenCase LUCENE_24 generateWordParts: 1 catenateAll: 0 catenateNumbers: 1} org.apache.solr.analysis.LowerCaseFilterFactory args: {luceneMatchVersion: LUCENE_24} org.apache.solr.analysis.EnglishPorterce_24} org.apache. apache.solr.analysis.RemoveDuplicatesTokenFilterFactory args: {luceneMatchVersion: LUCENE_24} Анализатор запросов: org.apache.solr.analysis.TokenizerChain ДЕТАЛИ

Фильтры символов:

org.apache.solr.analysis.HTMLStripCharFilterFactory args: {luceneMatchVersion: LUCENE_24} Класс токенизатора: org.apache.solr.analysis.WhitespaceTokenizerFactory

Фильтры:

org.apache.solr.analysis.SynonymFilterFactory args: {synonyms: synonyms.txt expand: true ignoreCase: true luceneMatchVersion: LUCENE_24} org.apache.solr.analysis.StopFilterFactory args: {words: stopwords.txtENGNORC: } org.apache.solr.analysis.WordDelimiterFilterFactory, аргументы: {splitOnCaseChange: 1 generateNumberParts: 1 catenateWords: 0 luceneMatchVersion: LUCENE_24 generateWordParts: 1 catenateAll: 0 catenateNumbers: 0} Lower_CatenateAll: 0 catenateNumbers. } org.apache.solr.analysis.EnglishPorterFilterFactory args: {protected: protwords.txt luceneMatchVersion: LUCENE_24} org.apache.solr.analysis.RemoveDuplicatesTokenFilterFactory args: {luceneMatchVersion:} LuceneMatchVersion:}


person Henry    schedule 24.02.2015    source источник


Ответы (1)


Вам нужно различать сохраненные и индексированные. Фильтр, который вы добавили в поле, изменит токены, которые хранятся в индексе Solr, для поиска, но не сохраненные значения для отображения.

Solr хранит две версии поля *. Один хранится. Это исходная часть текста, в вашем случае с включенным HTML. Другой - индексная версия. Там была применена вся магия анализа текста.

Затем, когда вы выполняете поиск, индекс используется для поиска документов, для которых найдено совпадение. При отображении результата вам будет представлена ​​сохраненная версия.


* Конечно только в том случае, если вы включили stored="true" и indexed="true".

person cheffe    schedule 24.02.2015
comment
Спасибо! Я изменил значение поля на stored = true и indexed = true, но все еще получаю разметку html, возвращаемую мне. Этого следовало ожидать? - person Henry; 24.02.2015
comment
Да, это то, что я хотел выразить. Solr не будет очищать сохраненные значения. Весь этот анализ очистит проиндексированные токены, но не сохраненный текст, который должен отображаться. - person cheffe; 25.02.2015
comment
Так как же удалить HTML из сохраненного текста? - person jim collins; 26.02.2015
comment
Это зависит от того, как вы передаете документы в Solr (ваш маршрут импорта). В этом обработчике импорта вы можете сделать что-то вроде этого - person cheffe; 27.02.2015
comment
@jimcollins, если вы используете ColdFusion, как в OP, вы можете использовать REReplace() для удаления тегов HTML при добавлении или обновлении коллекции. - person David Faber; 01.03.2015
comment
@DavidFaber, как мне использовать ReReplace () в теге cfindex? - person jim collins; 02.03.2015
comment
Это хороший вопрос! Не думаю, что ты мог бы. Но тогда я рекомендую использовать веб-службу Solr для индексации ваших данных, а не использовать <cfindex>. См. Следующую ссылку (по общему признанию, старую), чтобы узнать, как это можно сделать: thefaberfamily.org/search-smith/2011/12/ - person David Faber; 02.03.2015