Solrj ContentStreamUpdateRequest не может сохранить все литеральные поля, если они не являются динамическими
Я использую Извлечение Обработчик запросов для индексирования HTML и PDF-файлов. Наряду с тем, что находит тика, я хочу добавить метаданные сверх содержания тики. Для этого я использую литерал.= Support. Если я не использую динамические поля "*_s", данные не сохраняются. Кажется, только поле id работает как рекламируется. Я уверен, что я делаю что-то не так. Мои определения полей schema.xml:
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!-- The following fields don't work, need to use dynamic fields for some reason -->
<field name="region" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="href" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="services" type="text_general" indexed="false" stored="true" multiValued="true" />
Мой код Solrj:
ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");
ContentStream contentStream = new ContentStreamBase.StringStream(contentBean.getContent());
req.addContentStream(contentStream);
req.setParam("literal.region", region);
req.setParam("literal.href", contentBean.getHref());
req.setParam("literal.id", getDocId(url));
for (Map.Entry<String,String> entry : getFacetsFromURL(url).entrySet()) {
logger.info("Setting facet field {} to {}", entry.getKey(), entry.getValue());
req.setParam("literal." + entry.getKey(), entry.getValue());
}
// index h1 tag
req.setParam("fmap.tags_h1", "h1");
req.setParam("capture", "h1");
// index img tag
req.setParam("fmap.img", "tags_img");
req.setParam("capture", "img");
// lowercase tag names
req.setParam("lowernames", "true");
/*
* Passing commitWithin as a parameter seems
* to be the only way to get it to work with
* this request handler
*/
req.setParam("commitWithin", "10000");
/*
* Now do the work!
*/
req.process(server);
Изменение региона на region_s, href на href_s и добавление _s к значению ключа на карте работает. Я не понимаю, почему регион и т. Д. Не сохраняются, если они не соответствуют динамическому полю * _s в схеме. Я заметил несколько других проблем. Я попытался использовать copyField для перемещения одного из буквальных полей в поле для фасетирования, я никогда не вижу никаких данных в поле фасеток. Вот несколько способов, которыми я пробовал это
<field name="services_facet" type="string" indexed="true" stored="false" multiValued="true" />
<copyField source="services_s" dest="services_facet"/>
В services_facet никогда ничего нет. Я могу посмотреть на services_s, но разве это не должно работать? Solr-Cell сломан или плохо документирован?
1 ответ
Эта проблема была вызвана старым сеансом пристани, который был запущен Solr. Это предотвратило получение обновлений схемы. После того, как я убил причал, все заработало как положено.