Добавление полей в pdf файлы с использованием solrj - PullRequest
3 голосов
/ 02 марта 2012

Я новичок в solr.У меня возникла проблема с добавлением полей / метаданных в файлы pdf при индексации их в solr с помощью ContentStreamUpdateRequest. Поскольку для добавления полей необходимо использовать литерал, я попробовал следующее:

public static void indexFilesSolrCell(String fileName,String solrId,int i,String name,String Category,String loc,String locat) 
                    throws IOException, SolrServerException {
    //...
    ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract");
    File f1 = new File(fileName);
    up.addFile(new File(fileName));
    up.setParam("literal.id",solrId);
    up.setParam("literal.name",name );
    up.setParam("literal.url_file", loc);
    up.setParam("literal.location",locat);
    up.setParam("literal.Category",Category);
    //..
}

PDF-файл индексируется в solr, но проблема в том, что Не все поля были созданы с использованием литералов. Были созданы следующие поля:

  1. ID
  2. имя
  3. Категория .

    Хотя он не создает такие поля, как url_file или что-то вроде path или location . * Иногда * он не создает поле категория .
    Что касается того, что я прошел, любое случайное поле может быть создано с использованием литерального параметра для создания метаданных. Почему такие поля, как id или name или даже * 1037? * blah_s создаются всегда, но когда я пробую случайное поле, подобное вышеупомянутому, solr не создает?
    Должны ли мы также объявлять эти случайные поля где-нибудь еще?
    Любая помощь очень ценится.
    Обновление: не вызывает ли метод up.setParam ("literal.myField") изменение файла schema.xml для создания нового поля?

1 Ответ

3 голосов
/ 05 марта 2012

Это потому, что вы используете примеры solr, которые не содержат полей url_file и location.Вы можете найти schema.xml под example/solr/conf.Я предлагаю вам немного его очистить, сохранив только те поля, которые вам нужны, поскольку в этой схеме содержится много полей, которые вам не нужны.

Поле blah_s создается, поскольку используемая схема содержитследующее определение:

<dynamicField name="*_s" type="string"  indexed="true"  stored="true"/>

Это динамическое поле с суффиксом _s, оно означает, что каждое поле с таким суффиксом будет приниматься Solr как string, indexed и stored

Чтобы изменить schema.xml, вам нужно открыть его локально и внести изменения в XML-файл, а затем перезагрузить Solr.Помните, что после изменения схемы вам нужно переиндексировать, повторно запустив код, вставленный в ваш вопрос.

...