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. Это предотвратило получение обновлений схемы. После того, как я убил причал, все заработало как положено.

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