Solr не может хранить литералы, отправленные в Tika при использовании режима без схемы
Я использую Solr + Cell (Tika) + режим без схемы, и когда я отправляю файлы для индексации, я не вижу ни одного из предоставленных мною литералов, хранящихся в результирующих документах. Вот что я вижу, когда вернусь *:*
запрос в интерфейсе администратора. Он содержит только поле и версию идентификатора, но не содержит никаких других литералов или содержимого в файле.
{
"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 /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);
Так почему они не хранятся?