On 5/7/2019 5:45 AM, Jie Luo wrote:
For the fields that are set as stored true,  query works fine, but for fields 
that are set as stored false, the query does not work after the documents are 
updated.

SolrInputDocument solrInputDocument = new SolrInputDocument();
                solrInputDocument.addField(“id”,”somevalidId”);

Map<String, Object> fieldModifier = new HashMap<>(1);
                        fieldModifier.put("set", “some value");
                        solrInputDocument.addField(“aNewField", fieldModifier);

What you are doing there (using the "set" keyword in a Map object) is known as an Atomic Update. That feature has some very strict requirements, and by setting "stored" on your field, you are violating those requirements.

In your schema, only copyField destinations can be stored=false. In fact, those HAVE to be stored=false. Everything else will need to have data retrievable in search results.

Here is a fuller description of what Atomic Updates requires:

https://lucene.apache.org/solr/guide/7_7/updating-parts-of-documents.html#field-storage

Side note, the relevance will make sense once you've read that entire section of the ref guide: Some field classes (TextField in particular) do not support docValues.

Thanks,
Shawn

Reply via email to