Solr Cloud: как отключить метаданные документа (pdf, office) в виде полей

Я новичок в Solr и использую Solr 7.3.1 в облачном режиме solr и пытаюсь индексировать pdf, офисные документы в solr, используя contentextraction в solr.

Я создал коллекцию с
bin\solr create -c tsindex -s 2 -rf 2

в SolrJ мой код выглядит

public static void main(String[] args) {
    System.out.println("Solr Indexer");
    final String solrUrl = "http://localhost:8983/solr/tsindex/";
    HttpSolrClient solr = new HttpSolrClient.Builder(solrUrl).build();
    String filename="C:\\iSampleDocs\\doc-file.doc";    
    ContentStreamUpdateRequest solrRequest = new ContentStreamUpdateRequest("/update/extract");
    try {
        solrRequest.addFile(new File(filename), "application/msword");
        solrRequest.setParam("litral.ts_ref", "ts-456123");
        //solrRequest.setParam("defaultField", "text");

        solrRequest.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
        NamedList<Object> result= solr.request(solrRequest);
        System.out.println(result);

    } catch (IOException  e) {
        e.printStackTrace();
    }catch ( SolrServerException e) {
        e.printStackTrace();
    }
}

Я получаю несколько вопросов

  1. Хотя я создал поле ts_ref как text_general в Solr Admin UI это поле вообще не устанавливается.

  2. Моя цель состоит в том, чтобы проиндексировать весь документ, включая его метаданные, в одном поле, а затем установить пару файлов, ссылающихся на документ, в другой системе, например, в поле ts_ref. Но на самом деле происходит то, что solr извлекает метаданные файлов и создает отдельные поля для каждого значения метаданных.

Я пытался отключить data driven schema functionality от bin\solr config -c tsindex -zkHost localhost:9983 -property update.autoCreateFields -value false

Когда я раскомментирую строку solrRequest.setParam("defaultField", "text"); с самого начала не существует отдельных полей для всех извлеченных метаданных, но как только я комментирую эту строку и загружаю файлы, метаданные впоследствии снова оказываются в отдельных полях (даже если я снова раскомментирую их).

1 ответ

Решение
  1. "litral.ts_ref" здесь есть опечатка, пропущенная
  2. Вы можете добиться игнорирования всех полей метаданных, используя поле uprefix и динамическое поле, которое сопровождает его. Смотрите документ, который показывает именно этот случай.
Другие вопросы по тегам