2015-08-28 3 views
0

В mysql у меня есть столбец ids varchar(255), его значения, разделенные запятой. например 1,3,5,7.Solr - идентификаторы, разделенные запятой

При выполнении поиска с помощью Solr, пользователь будет обеспечить единый id, например 3, то он должен быть в состоянии найдены строки, в которых ids столбец содержит значение 3.

Возникает вопрос:

Как следует импортировать эти данные через DIH и определить поле в Solr? Спасибо.

ответ

2

в данных-import.xml (если вы назвали его таким образом), вы можете использовать the built-in RegexTransformer

<entity name="foo" transformer="RegexTransformer" query="select list_of_ids from foo"/> 
    <field column="splittedIDs" splitBy="," sourceColName="list_of_ids"/> 
</entity> 

Как вы можете видеть, что вам нужно

  • добавить transformer="RegexTransformer" для юридического лица
  • добавить splitBy="," для данного поля

В вашем поле schema.xml должно быть multivalued="true". Люди, как правило, забывают об этом и спрашивают, почему на первое или последнее значение сохраняется.

+0

После рассмотрения, мне лучше хранить идентификаторы в дополнительной таблице. Я задал еще один вопрос, не могли бы вы также взглянуть, thx. Ссылка: http://stackoverflow.com/questions/32263896/solr-dih-define-import-one-to-many-field –

2

Как вы указали ваши данные разделяемый запятой порядковый номер. Вы можете использовать следующую конфигурацию FieldType.

<fieldType name="comma_numbers" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" /> 
    </analyzer> 
</fieldType> 

Если containes данные других то цифры, то вам, возможно, потребуется настроить WordDelimiterFilterFactory фильтр в конфигурации.

Analysis of the data and fieldType

+0

Учтите, что лучше хранить идентификаторы в дополнительном столе. Я задал еще один вопрос, не могли бы вы также взглянуть, thx. Ссылка: http://stackoverflow.com/questions/32263896/solr-dih-define-import-one-to-many-field –

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