[ 
https://issues.apache.org/jira/browse/SOLR-139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13504540#comment-13504540
 ] 

Lukas Graf edited comment on SOLR-139 at 11/27/12 11:38 AM:
------------------------------------------------------------

This feature doesn't work as advertised in Solr 4.0.0 (final).

Since it's not documented, I used the information in these blog posts 
([yonik.com|http://yonik.com/solr/atomic-updates/], 
[solr.pl|http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/]) and 
this ticket to try to get it working, and asked in the #solr IRC channel, to no 
avail.

Whenever I use the 'set' command in an update message, it mangles the value to 
something like {code:xml}<str name="Title">{set=My new title}</str>{code} , and 
drops all other fields.

I tried the JSON as well as the XML Syntax for the update message, and I tried 
it with both a manually defined '_version_' field and without.

Relevant parts from my schema.xml:

{code:xml}
<schema name="solr-instance" version="1.4">

    <fields>
      <field name="Creator" type="string" indexed="true" stored="true" 
required="false" multiValued="false" />
      <!-- ... -->
      <field name="Title" type="text" indexed="true" stored="true" 
required="false" multiValued="false" />
      <field name="UID" type="string" indexed="true" stored="true" 
required="true" multiValued="false" />
      <field name="_version_" type="long" indexed="true" stored="true" 
required="false" multiValued="false" />
    </fields>

    <!-- ... -->

    <uniqueKey>UID</uniqueKey>

</schema>
{code}

I initially created some content like this:

{noformat}
$ curl 'localhost:8983/solr/update?commit=true' -H 
'Content-type:application/json' -d '[{"UID":"7cb8a43c","Title":"My original 
Title", "Creator": "John Doe"}]'
{noformat}

Which resulted in this document:

{code:xml}
<doc>
    <str name="UID">7cb8a43c</str>
    <str name="Title">My original Title</str>
    <str name="Creator">John Doe</str>
</doc>
{code}

Then I tried to update that document with this statement:

{noformat}
$ curl 'localhost:8983/solr/update?commit=true' -H 
'Content-type:application/json' -d '[{"UID":"7cb8a43c","Title":{"set":"My new 
title"}}]'
{noformat}

Which resulted in this mangled document:

{code:xml}
<doc>
    <str name="UID">7cb8a43c</str>
    <str name="Title">{set=My new title}</str>
</doc>
{code}

(I would have expected the document to still have the value 'John Doe' for the 
'Creator' field,
and have the value of its 'Title' field update to 'My new title')

I tried using the XML format for the update message as well:

{code:xml}
<add>
   <doc>
       <field name="UID">7cb8a43c</field>
       <field name="Title" update="set">My new title</field>
   </doc>
</add>
{code}

Same result as above.
                
      was (Author: lukasgraf):
    This feature doesn't work as advertised in Solr 4.0.0 (final).

Since it's not documented, I used the information in these blog posts 
([yonik.com|http://yonik.com/solr/atomic-updates/], 
[solr.pl|http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/]) and 
this ticket to try to get it working, and asked in the #solr IRC channel, to no 
avail.

Whenever I use the 'set' command in an update message, it mangles the value to 
something like {code:xml}<str name="Title">{set=My new title}</str>{code} , and 
drops all other fields.

I tried the JSON as well as the XML Syntax for the update message, and I tried 
it with both a manually defined '_version_' field and without.

Relevant parts from my schema.xml:

{code:xml}
<schema name="solr-instance" version="1.4">

    <fields>
      <field name="Creator" type="string" indexed="true" stored="true" 
required="false" multiValued="false" />
      <!-- ... -->
      <field name="Title" type="text" indexed="true" stored="true" 
required="false" multiValued="false" />
      <field name="UID" type="string" indexed="true" stored="true" 
required="true" multiValued="false" />
      <field name="_version_" type="long" indexed="true" stored="true" 
required="false" multiValued="false" />
    </fields>

    <!-- ... -->

    <uniqueKey>UID</uniqueKey>

</schema>
{code}

I initially created some content like this:

{noformat}
$ curl 'localhost:8983/solr/update?commit=true' -H 
'Content-type:application/json' -d '[{"UID":"7cb8a43c","Title":"My original 
Title", "Creator": "John Doe"}]'
{noformat}

Which resulted in this document:

{code:xml}
<doc>
    <str name="UID">7cb8a43c</str>
    <str name="Title">My original Title</str>
    <str name="Creator">John Doe</str>
</doc>
{code}

Then I tried to update that document with this statement:

{noformat}
$ curl 'localhost:8983/solr/update?commit=true' -H 
'Content-type:application/json' -d '[{"UID":"7cb8a43c","Title":{"set":"My new 
title"}}]'
{noformat}

Which resulted in this mangled document:

{code:xml}
<doc>
    <str name="UID">7cb8a43c</str>
    <str name="Title">{set=My new title}</str>
</doc>
{code}

(I would have expected the document to still have the value 'John Doe' for the 
'Creator' field,
and have the value of its 'Title' field update to 'My new title')

I tried using the XML format for the update message as well:

{code:xml}
<add>
   <doc>
       <field name="id">7cb8a43c</field>
       <field name="Title" update="set">My new title</field>
   </doc>
</add>
{code}

Same result as above.
                  
> Support updateable/modifiable documents
> ---------------------------------------
>
>                 Key: SOLR-139
>                 URL: https://issues.apache.org/jira/browse/SOLR-139
>             Project: Solr
>          Issue Type: New Feature
>          Components: update
>            Reporter: Ryan McKinley
>             Fix For: 4.0
>
>         Attachments: Eriks-ModifiableDocument.patch, 
> Eriks-ModifiableDocument.patch, Eriks-ModifiableDocument.patch, 
> Eriks-ModifiableDocument.patch, Eriks-ModifiableDocument.patch, 
> Eriks-ModifiableDocument.patch, getStoredFields.patch, getStoredFields.patch, 
> getStoredFields.patch, getStoredFields.patch, getStoredFields.patch, 
> SOLR-139_createIfNotExist.patch, SOLR-139-IndexDocumentCommand.patch, 
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch, 
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch, 
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch, 
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch, 
> SOLR-139-IndexDocumentCommand.patch, SOLR-139-IndexDocumentCommand.patch, 
> SOLR-139-ModifyInputDocuments.patch, SOLR-139-ModifyInputDocuments.patch, 
> SOLR-139-ModifyInputDocuments.patch, SOLR-139-ModifyInputDocuments.patch, 
> SOLR-139.patch, SOLR-139.patch, SOLR-139-XmlUpdater.patch, 
> SOLR-269+139-ModifiableDocumentUpdateProcessor.patch
>
>
> It would be nice to be able to update some fields on a document without 
> having to insert the entire document.
> Given the way lucene is structured, (for now) one can only modify stored 
> fields.
> While we are at it, we can support incrementing an existing value - I think 
> this only makes sense for numbers.
> for background, see:
> http://www.nabble.com/loading-many-documents-by-ID-tf3145666.html#a8722293

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to