Индексировать каждое слово текстового файла, которые разделены пробелом в 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 не работает, поэтому попробуйте еще раз, если есть страница с ошибкой.