我正在使用 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);
那么为什么不存储这些呢?