首页 > 解决方案 > Solr Cloud:如何将文档(pdf、office)元数据禁用为字段

问题描述

我是 Solr 的新手,在 solr 云模式下使用 Solr 7.3.1 并尝试在 solr 中索引 pdf、office 文档,在 solr 中使用 contentextraction。

我创建了一个集合
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. 虽然我在 Solr Admin UI 中创建了字段ts_reftext_general但根本没有设置此字段。

  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");从一开始就取消注释行时,提取的所有元数据都没有单独的字段,但是一旦我注释了这一行并上传文件,元数据就会再次出现在单独的字段中(即使我再次取消注释)。

标签: solrsolrjsolrcloudsolr-schema

解决方案


  1. "litral.ts_ref" 这里有一个错字,缺少一个 e
  2. 您可以通过使用 uprefix 字段和与之配套的动态字段来实现忽略所有元数据字段。请参阅显示该案例的文档。

推荐阅读