solr - 使用 solrj 向 pdf 文件添加字段

标签 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 中得到索引,但问题是并非所有字段都是使用文字创建的。已创建以下字段:

  1. id
  2. 姓名
  3. 类别

    虽然它不会创建像 url_file 或任何像 pathlocation 这样的字段。*有时*它不会创建字段 Category
    据我所知,任何随机字段都可以使用文字参数创建元数据。为什么像 idname 或即使 blah_s 总是被创建,但是当我尝试像上面提到的那样的随机字段时,solr 不会创建?
    我们是否也必须在其他任何地方声明这些随机字段?
    非常感谢任何帮助。
    更新:调用方法up.setParam("literal.myField") 修改schema.xml 来创建一个新的字段?

最佳答案

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

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

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

这是一个带有后缀_s的动态字段,这意味着每个带有该后缀的字段将被Solr作为stringindexed存储

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

关于solr - 使用 solrj 向 pdf 文件添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533917/

相关文章:

java - CloudSolrServer : Could not find collection : gettingstarted

junit - 使用 JUnit4 为 Solr 插件编写单元测试,包括创建集合

java - Solr查询如何读取分组值?

php - 如何使用 solr 等在 MySQL 中使用 match-against 获得与 %someword% 相同的效果

file - Solr 文件描述符计数

java - Apache Solr Java 教程

pdf - 索引 pdf 文档

solr - tika solr 集成

solr - 导入丰富的文档时,SOLR 是否有最佳实践 schema.xml?

java - Solr 错误 #500 IOE