2015-04-17 11 views
0

Я хочу манипулировать документом и изменять значение токена для полей, добавляя некоторое значение для каждого токена. Я делаю массовое обновление через DIH, а также отправляю документы через SOLRJ. У меня коэффициент репликации равным 2, поэтому репликация также должна работать. Значение, которое я хочу добавить, есть в документе как отдельное поле. Мне интересно узнать, где я могу перехватить документ перед индексированием, чтобы я мог манипулировать им. Один из вариантов, я могу думать о переопределении DirectUpdateHandler2. Это правильное место?Как перехватить документ в Solr

Я могу сделать это путем внешней обработки документа и передачи его в SOLR. Но я хочу сделать это внутри SOLR.

Поля документа:

  1. город: Mumbai
  2. RestaurantName: Разговор о
  3. Ключевые слова: КОФЕ, скул, Южной индийской, Бар

Я хочу индексировать ключевые слова, как

  1. mumbai_cofee
  2. mumbai_Chines
  3. mumbai_South Индийский
  4. mumbai_Bar
+0

У вас есть образец, в котором вы хотели бы применить это. Я бы предложил добавить «PatternReplaceFilterFactory», чтобы решить проблему. –

+0

@AbhijitBashetti - это не сработает, потому что вы не можете извлекать данные из другого поля в полевом анализе Solr. – frances

+0

Драйвер JDBC, вероятно, самый популярный DIH ''. Если вы используете это, вы можете выполнить это во встроенных SQL-запросах. Если это так, вы можете использовать 'CONCAT (RestaurantName,« _ », city) AS-ресторан, CONCAT (ключевое слово,« _ », city) ключевое слово AS в вашем SQL-запросе в конфигурации импорта данных Solr. – frances

ответ

0

правильное место является Update Request Processor, вы убедитесь, что вы подключите, что в sorlconfig.xml во все udpate обработчики, которые вы используете (в том числе DIH), и единый URP будет охватывать все обновления.

В вашем java-коде в URP вы можете легко получить значение поля, а затем добавить его ко всем остальным в другом поле и т. Д. Это происходит до индексации документа.

+0

Я не вижу API, но выглядит как хорошее место. Я должен расширить этот класс (URP), правильно? –

+0

Да, посмотрите пример в тесте Solr или онлайн, есть много – Persimmonium