Индексировать каждое слово текстового файла, которые разделены пробелом в solr?

Я реализую Solr 3.6 в моем приложении. Как у меня есть данные ниже в моем текстовом файле..

**

date = 2011-07-08 time = 10: 55: 06 timezone = "IST" имя_устройства ="CR1000i" device_id=C010600504-TYGJD3 deploy_mode = "Маршрут" log_id=031006209001 log_type="Антивирус" log_component="FTP" log_subtype="Очистить" статус = "Отклонено" приоритет = критический fw_rule_id="" user_name="hemant" virus="codevirus" FTP_URL="ftp.myftp.com" FTP_direction="скачать" filename="hemantresume.doc" file_size="550k" file_path="deepti/Shortcut to virus.lnk" ftpcommand="RETR" src_ip=10.103.6.100 dst_ip=10.103.6.66 protocol="TCP" src_port=2458 dst_port=21 dstdomain="myftp.cpm" sent_bytes=162 recv_bytes=45 message="Не удалось завершить FTP-загрузку файла resume.doc размером 550k с сервера ftp.myftp.com, так как файл был заражен вирусным кодовым вирусом"

**

Теперь я хочу разделить вышеуказанные данные на основе пар ключ-значение.. и хочу, чтобы каждое значение индексировалось на основе ключа.. Я хочу, чтобы изменения были в конфигурационных файлах. Я прошел токенизатор, в котором whitespaceokenizer может work.but хотите, чтобы вся структура была проиндексирована.. так может кто-нибудь, пожалуйста, помогите мне в этом??? Спасибо..

2 ответа

Я не знаю токенизатора, который бы это делал.

Использование статических полей:

Вы должны определить все свои "ключи" как поля в schema.xml. Они должны иметь соответствующие типы (даты, строки и т. Д.).

Создайте POJO с этими полями, проанализируйте пары ключ / значение и заполните POJO. Добавьте это pojo к solr, используя solrj.

Использование динамических полей:

В этом случае вам не нужно определять ключи в схеме, а использовать динамические поля (в зависимости от типа данных). Вам все еще нужно разобрать пары ключ / значение и добавить в документ solr. Эти поля необходимо добавить с помощью метода solrInputdoc.addField.

При определении добавления новых пар ключ / значение клиенту все равно нужно будет знать о существовании этого нового ключа. Но твой индексатор не нужен.

Это нельзя сделать с помощью токенизатора. Токенайзеры вызываются для каждого поля, но вам нужно обработать их перед передачей данных в поле.

Трансформер, вероятно, мог бы сделать это, или вы могли бы сделать некоторое простое преобразование перед отправкой его в виде XML. Не должно быть трудно написать что-то, что читает этот формат и генерирует правильный формат XML для представлений Solr. Это точно не будет сложно в Python.

Для этого ввода:

date=2011-07-08 time=10:55:06 timezone="IST" device_name="CR1000i"

Вам необходимо создать соответствующие поля в схеме и сгенерировать:

<doc>
  <field name="date">2011-07-08</field>
  <field name="time">2011-07-08</field>
  <field name="timezone">IST</field>
  <field name="device_name">CR1000i</field>
  ...

Также в этой предварительной обработке вы почти наверняка захотите преобразовать первые три поля в единую дату-время в формате UTC.

Подробнее о формате обновления Solr XML см. По адресу: http://wiki.apache.org/solr/UpdateXmlMessages

В данный момент Apache wiki не работает, поэтому попробуйте еще раз, если есть страница с ошибкой.

Другие вопросы по тегам