Solr Cloud:如何禁用文档(pdf,office)元数据作为字段

时间:2018-07-24 09:14:08

标签: solr solrj solrcloud solr-schema

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

我用
创建了一个收藏集 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_ref创建为text_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");的注释时,没有针对所有提取的元数据的单独字段,但是,一旦我注释了这一行并上传文件,元数据随后便再次位于单独的字段中(即使我再次取消评论)。

1 个答案:

答案 0 :(得分:1)

  1. “ litral.ts_ref”在这里有错字,缺少e
  2. 您可以通过使用uprefix字段及其附带的动态字段来忽略所有元数据字段。请参见doc,该情况恰好显示了这种情况。