2014-01-07 4 views
0

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

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 

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

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

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

+0

Нет Solr 5. Вы имеете в виду Solr 4.5? Кроме того, каков ваш первичный ключ? Если вы сделали соединение, в каком поле/полях вы это сделаете? –

+0

Извините, я имел в виду Solr 4.5. Мой первичный ключ - f1. Если бы я сделал соединение, я бы присоединился к f1 и f2. – dipteshc

ответ

1

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

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

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

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

+0

Спасибо, jro. Единственная проблема в моем случае использования заключается в том, что с полями могут быть добавлены новые поля. Если я делаю слияние файлов, то для добавления нового поля мне придется делать полный импорт данных каждый раз при добавлении нового поля. Как бы вы поступили в этом случае? – dipteshc

+0

Знаете ли вы, что запись является обновлением, а не новой? Если да, вы можете использовать атомный формат обновления обновлений, и Solr объединит его для вас. Но вы должны хранить - не только индекс - поле для этого. Вам также понадобится уникальный ключ (вы сказали, что вам нужно два поля для слияния, что может быть проблемой). –

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