所有
我是solr和solrj的新手。我现在要做的是将pdf文件上传到solr并同时设置自定义字段,例如last_modified字段。
但我一直遇到错误,例如“非multiValued字段last_modified遇到多个值”,我使用solrj上传pdf并设置last_modified字段,如
ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract");
up.setParam("literal.last_modified", "2011-05-19T09:00:00Z");
我猜错误是由于当solr提取pdf时,它使用一些元数据作为last_modified字段值,以便我的custmized last_modified值导致多值错误,但我想知道如何替换元我的客户数据的数据?
由于
答案 0 :(得分:0)
在您的特定场景中,某些内容看起来很奇怪。似乎相关的参数是 literalsOverride ,但默认情况下为true。也许,你将它设置为某处 false 。
您还可以尝试将Tika的最后更新字段显式地映射到某个不同的名称。
我会将catch-all(dynamicField *)设为 store = true 并查看正在捕获的内容。然后你可以玩这些参数直到你开心。您不必重新启动Solr,只需从管理UI中重新加载核心。
答案 1 :(得分:0)
我遇到过类似的问题,我需要获取一个动态字段值并执行一些操作然后更新它。我使用下面的代码来实现这一点。 首先检查该字段是否存在。尝试使用以下代码可能会对您有所帮助。
Map<String, String> partialUpdate = new HashMap<String, String>();
if(alreadyPresent)
{
partialUpdate.put("set", value);
}else
{
partialUpdate.put("add", value);
}
doc.addField("projectId", projectId); // unique id for solrdoc
doc.addField(keys[0], partialUpdate);
docs.add(doc);
solrServer.add(docs);
solrServer.commit();