Импорт из нескольких текстовых файлов в Solr

У меня есть два текстовых файла, назовите их A.txt и B.txt. И A.txt, и B.txt имеют 3 поля. Но семантика другая. Назовем эти поля следующим образом:

A.txt : f1, f2, f3
B.txt : f1, f2, f4

A.txt и B.txt имеют одинаковые значения для f1 и f2, но имеют другое третье поле.

Я хотел бы импортировать эти файлы в Solr (я использую Solr 4.5). Но предостережение заключается в том, что соответствующие записи из A.txt и B.txt должны быть объединены в один документ. Так, например, если у нас есть:

A.txt
1,50,foo
51,100,bar

B.txt
1,50,xkcd
51,100,qc

После импорта данных в Solr должно быть 2 документа:

1,50,foo,xkcd
51,100,bar,qc

Если бы документы хранились в базах данных SQL, это был бы простой запрос на соединение. Но поскольку документы хранятся в виде строк в файле CSV, и я использую LineEntityProcessor с функцией преобразования для импорта данных, есть ли способ выполнить эту задачу?


person dipteshc    schedule 07.01.2014    source источник
comment
Solr 5 нет. Вы имеете в виду Solr 4.5? Кроме того, какой у вас первичный ключ? Если бы вы сделали объединение, в каком поле/полях вы бы это сделали?   -  person Alexandre Rafalovitch    schedule 08.01.2014
comment
Извините, я имел в виду Solr 4.5. Мой основной ключ — f1. Если бы я присоединился, я бы присоединился к f1 и f2.   -  person dipteshc    schedule 08.01.2014


Ответы (1)


Я хотел бы импортировать эти файлы в Solr (я использую Solr 4.5). Но предостережение заключается в том, что соответствующие записи из A.txt и B.txt должны быть объединены в один документ... После импорта данных в Solr должно быть 2 документа.

Это не сработает так, как вы предполагаете. По умолчанию Solr рассматривает обновление документа как функциональный эквивалент транзакционного удаления и вставки.

В Solr 4 возможности атомарного обновления позволяли обновлять некоторые поля, не затрагивая остальную часть поля документа. данные. Существуют ограничения в том, как они работают, так как для этого требуются метаданные об обновлении и требуются форматы XML или JSON. Однако структуры текстовых файлов, которые вы идентифицировали, не будут работать с этим.

Мое предложение: избавьте себя от головной боли и напишите сценарий слияния файлов, который объединяет ваши текстовые файлы для создания записи, которую вы хотите, до ее сохранения в Solr.

person jro    schedule 08.01.2014
comment
Спасибо джро. Единственная проблема в моем случае использования заключается в том, что со временем в документы могут быть добавлены новые поля. Если я выполняю слияние файлов, то для добавления нового поля мне придется выполнять полный импорт данных каждый раз, когда добавляется новое поле. Как бы вы поступили в этом случае? - person dipteshc; 08.01.2014
comment
Знаете ли вы, является ли запись обновлением, а не новым? Если да, вы можете использовать формат атомарного обновления, и Solr объединит его для вас. Но вы должны хранить, а не просто индексировать поле, чтобы это произошло. Вам также понадобится уникальный ключ (вы сказали, что вам нужно два поля для слияния, что может быть проблемой). - person Alexandre Rafalovitch; 09.01.2014