Solr 存储映射而不是原子更新
Solr stores map instead of atomic update
当尝试执行 "fields" 的原子更新时,我最终得到了一个存储在那里的映射(如 'add=something'),而不是它的原子添加操作。字段存储,docValues和multiValued。无法得到:我做错了什么?
...
final SolrQuery query = new SolrQuery("tag:(" + term + ')');
final AddUpdateCommand addUpdateCommand;
final SolrQueryRequest queryRequest = new LocalSolrQueryRequest(targetCore, query)
addUpdateCommand = new AddUpdateCommand(queryRequest);
final SolrInputDocument document = new SolrInputDocument();
document.addField("tag", term);
document.addField("fields", ImmutableMap.of("add", fieldName));
addUpdateCommand.solrDoc = document;
assert AtomicUpdateDocumentMerger.isAtomicUpdate(addUpdateCommand);
updateHandler.addDoc(addUpdateCommand);
...
试试这个:
Map<String,Object> fieldModifier = new HashMap<>(1);
fieldModifier.put("add",fieldName);
sdoc.addField("fields", fieldModifier); // add the map as the field value
我实际上只是简单地存储了一个 List
而不是 Map
,手动更新了必要字段的内容。由于某种原因,原子更新不起作用。
当尝试执行 "fields" 的原子更新时,我最终得到了一个存储在那里的映射(如 'add=something'),而不是它的原子添加操作。字段存储,docValues和multiValued。无法得到:我做错了什么?
...
final SolrQuery query = new SolrQuery("tag:(" + term + ')');
final AddUpdateCommand addUpdateCommand;
final SolrQueryRequest queryRequest = new LocalSolrQueryRequest(targetCore, query)
addUpdateCommand = new AddUpdateCommand(queryRequest);
final SolrInputDocument document = new SolrInputDocument();
document.addField("tag", term);
document.addField("fields", ImmutableMap.of("add", fieldName));
addUpdateCommand.solrDoc = document;
assert AtomicUpdateDocumentMerger.isAtomicUpdate(addUpdateCommand);
updateHandler.addDoc(addUpdateCommand);
...
试试这个:
Map<String,Object> fieldModifier = new HashMap<>(1);
fieldModifier.put("add",fieldName);
sdoc.addField("fields", fieldModifier); // add the map as the field value
我实际上只是简单地存储了一个 List
而不是 Map
,手动更新了必要字段的内容。由于某种原因,原子更新不起作用。