使用solrj将字段添加到pdf文件

时间:2012-03-02 13:14:21

标签: solr solrj solr-cell

我是solr的新手。我在使用ContentStreamUpdateRequest在solr中索引它们时将字段/元数据添加到pdf文件时遇到问题。由于必须使用文字参数来添加字段,我尝试了以下内容:

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中编入索引,但问题是所有字段都是使用literal创建的。以下字段已创建:

  1. ID
  2. 名称
  3. 分类

    虽然它不会创建 url_file 等字段或路径位置等字段。* 有时 *它不会创建字段类别
    至于我所经历的,可以使用文字参数创建任何随机字段来创建元数据。为什么像 id name 这样的字段或者甚至 blah_s 总是被创建但是当我尝试像上面提到的随机字段时,solr不会创建?
    我们是否还必须在其他地方声明这些随机字段?
    非常感谢任何帮助。
    更新:不调用方法up.setParam(“literal.myField”)修改schema.xml以创建新字段?

1 个答案:

答案 0 :(得分:3)

那是因为您使用的solr示例不包含url_filelocation字段。您可以在schema.xml下找到example/solr/conf。我建议你稍微清理一下,只保留你需要的字段,因为那个模式包含很多你并不需要的字段。

创建了blah_s字段,因为您使用的模式包含以下定义:

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

这是一个带有后缀_s的动态字段,这意味着具有该后缀的每个字段都将被Solr视为stringindexedstored

要修改schema.xml,您需要在本地打开它并更改xml文件,然后重新加载Solr。请记住,在架构更改后,您需要重新编制索引,重新运行您在问题中粘贴的代码。