1

我正在使用 Solr + Cell (Tika) + schemaless 模式,当我发送要索引的文件时,我没有看到我提供的任何文字存储在结果文档中。这是我*:*在 solr 管理 UI 中执行查询时看到的返回结果。它仅包含 ID 字段和版本,但不包含文件中的其他文字甚至内容。

{
"responseHeader": {
"status": 0,
"QTime": 2,
"params": {
  "indent": "true",
  "q": "*:*",
  "_": "1432606194712",
  "wt": "json"
  }
},
"response": {
"numFound": 3,
"start": 0,
"docs": [
  {
    "id": "fa8ab118-4fd2-45db-81ea-d38d533a85bd",
    "_version_": 1502169638339870700
  },
  {
    "id": "550b56ad-fd1f-4340-9a94-4c3cd7491e8d",
    "_version_": 1502191400586838000
  },
  {
    "id": "587b4c68-7a9f-4844-9829-a7d92b6bc98d",
    "_version_": 1502196460453625900
  }
]
}
}

这是我要发送的 POST:

POST /solr/archive/update/extract?literal.id=587b4c68-7a9f-4844-9829-a7d92b6bc98d&literal.employeeNumber=3855&literal.name=Monthly+Workforce+Report.pdf&literal.url=http%3A%2F%2Flocalhost%3A8060%2Fapp%2Fhistory%2Fdocument%2F587b4c68-7a9f-4844-9829-a7d92b6bc98d&literal.archivedDate=2015-05-25T22%3A09%3A39.000-0400&wt=javabin&version=2

我正在使用 SolrJ 使用以下代码发送此请求:

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

    ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");
    req.addFile(getLocation(), null);
    ModifiableSolrParams params = new ModifiableSolrParams();
    if( id != null ) params.add(ExtractingParams.LITERALS_PREFIX + "id", id.toString() );
    params.add(ExtractingParams.LITERALS_PREFIX + "employeeNumber", employeeNumber);
    params.add(ExtractingParams.LITERALS_PREFIX + "name", name);
    params.add(ExtractingParams.LITERALS_PREFIX + "url", url.toString());
    params.add(ExtractingParams.LITERALS_PREFIX + "archivedDate", format.format(archiveDate));
    if( imageUrl != null ) params.add(ExtractingParams.LITERALS_PREFIX + "imageUrl", imageUrl.toString());
    if( categories != null ) {
        for( String cat : categories ) {
            params.add(ExtractingParams.LITERALS_PREFIX + "category", cat);
        }
    }
    req.setParams( params );
    NamedList<Object> result = server.request( req );

它创建文档,但无法存储我提供的文字值。而且我很确定它从文件内容中读取的元数据和内容也没有被存储。

我可以确认,如果我使用此代码,它会很好地存储所有内容:

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

    SolrInputDocument doc = new SolrInputDocument();
    doc.addField("id", id.toString());
    doc.addField("employeeNumber", employeeNumber);
    doc.addField("name", name);
    doc.addField("url", url.toString());
    if( imageUrl != null ) doc.addField("imageUrl", imageUrl.toString());
    doc.addField("location", location.getAbsolutePath());
    doc.addField("archivedDate", format.format(archiveDate) );
    if( categories != null ) {
        for( String cat : categories ) {
            doc.addField("category", cat);
        }
    }
    server.add(doc);

那么为什么不存储这些呢?

4

0 回答 0