Можем ли мы индексировать в Solr одноядерные данные из двух разных форматов, то есть из csv и текста?

У меня есть данные в двух форматах CSV и TEXT.

1) CSV-файл содержит метаданные. то есть ModifyScore, Size, fileName и т.д.

2) фактический текст находится в папках Text с такими файлами, как a.txt, b.txt и т. д.

Подскажите пожалуйста, можно ли в Solr индексировать такие данные в одном ядре через DIH или другим возможным способом?


person Shah Khalid    schedule 20.09.2017    source источник


Ответы (3)


В соответствии с вашим вариантом использования я бы приступил к пользовательскому приложению индексации. По-видимому, вы хотите создать документ Solr, извлекая какое-то поле из CSV и какое-то другое поле (контент) из TXT.

Например, при использовании Java это будет довольно просто: вы можете использовать SolrJ, извлекать данные из CSV и TXT, создавать каждый документ Solr, а затем индексировать его.

Я бы использовал DIH, если бы я мог перемещать данные в БД (даже 2 таблицы в порядке, так как DIH поддерживает соединения). Из коробки вас может заинтересовать использование скрипта [1] transform. Использование его в сочетании с вашими различными источниками данных может сработать. Вам нужно немного поиграть с этим, так как это не прямое решение вашей проблемы.

[1] https://cwiki.apache.org/confluence/display/solr/Uploading+Structured+Data+Store+Data+with+the+Data+Import+Handler#UploadingStructuredDataStoreDatawiththeDataImportHandler-TheScriptTransformer

person Alessandro Benedetti    schedule 20.09.2017

Просто упомянем еще пару возможностей:

  1. Используйте DIH для индексации файлов txt в коллекцию A и используйте обработчик /update для загрузки csv непосредственно в коллекцию B, затем используйте Потоковые выражения, чтобы объединить их в третью коллекцию, которую вы хотите сохранить. Главное преимущество — все в Solr, никакого внешнего кода.

  2. Используйте DIH для индексации файлов (или /update для индексации csv) и напишите Обработчик запросов на обновление, который перехватывает документы до того, как они будут проиндексированы, ищет информацию из другого источника и добавляет ее в документ.

person Persimmonium    schedule 20.09.2017
comment
Большое спасибо за находчивую помощь @Persimmonium. Мне нравится первый ответ, я уже проиндексировал текстовые файлы в ядре A и файл csv в ядре B, оба ядра имеют одинаковое уникальное ключевое поле. Пожалуйста, возможно ли объединить эти ядра с помощью потоковых выражений. - person Shah Khalid; 21.09.2017
comment
Я думаю, что все части есть, вам просто нужно создать свои выражения (это может быть довольно сложно) - person Persimmonium; 21.09.2017
comment
Могу ли я использовать потоковые выражения для ядер solr? @ Хурма - person Shah Khalid; 24.09.2017
comment
если вы имеете в виду, можете ли вы использовать его в автономном solr, то нет, вам нужен solrcloud - person Persimmonium; 24.09.2017

Да, это возможно для информации и кода, как индексировать данные из нескольких разнородных источников данных, см. text-field-in-the-following-data-c">почему tikaEntityProcesor не индексирует текстовое поле в следующем файле конфигурации данных?

person Shah Khalid    schedule 27.09.2017