Только индексировать документы, которые содержат определенную строку в solr

Как индексировать документы, содержащие определенную строку в solr? Это мой текущий обработчик импорта данных

<dataConfig>
        <dataSource type="FileDataSource" encoding="UTF-8" />
        <document>
        <entity name="page"
                processor="XPathEntityProcessor"
                stream="true"
                forEach="/mediawiki/page/"
                url="pages.xml"
                transformer="RegexTransformer"
                >
            <field column="id"        xpath="/mediawiki/page/id" />
            <field column="title"     xpath="/mediawiki/page/title" />
            <field column="text"   regex="\{\{PersonData"   xpath="/mediawiki/page/revision/text" />
       </entity>
        </document>
</dataConfig>

Я хочу индексировать только в том случае, если текстовое поле содержит {{PersonData , но приведенное выше импортирует все. Следует ли это указывать в обработчике импорта или схеме?


person NEO    schedule 01.12.2013    source источник


Ответы (1)


Вам нужно сделать что-то вроде этого:

<field column="$skipDoc" regex="^#REDIRECT .*" replaceWith="true" sourceColName="text"/>

В этом случае документы, соответствующие указанному регулярному выражению, пропускаются, т.е. статьи, которые являются «перенаправлениями» на другие статьи, здесь пропускаются.

Подробная документация здесь: http://wiki.apache.org/solr/DataImportHandler#XPathEntityProcessor

Итак, для вас вам нужно найти способ пропустить все документы, в которых данные «PersonData» НЕ находятся в «текстовом» столбце.

В частности, обратите внимание на: «Пример: индексирование википедии», часть http://wiki.apache.org/solr/DataImportHandler#XPathEntityProcessor

person Arun    schedule 02.12.2013
comment
@Naren Вы пробовали вышеуказанное решение? Это сработало для меня. - person Arun; 04.12.2013