lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Khludnev (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SOLR-6700) ChildDocTransformer doesn't return correct children after updating and optimising solr index
Date Sat, 31 Mar 2018 09:53:00 GMT

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

Mikhail Khludnev commented on SOLR-6700:
----------------------------------------

bq. If possible it would be great to throw an error when attempting to update part of a block.
But that would probably mean storing more metadata in the index and doing an extra query up
front for every add...?

[~janhoy], as it was discussed at Vegas, it make sense to create a subclass of {{DUH2}} which
always adds \_root_ field even if a doc is a childfree. It's considered as affordable tradeoff
to make the scenarios like this (atomic update of parent's field) much easier to implement.

> ChildDocTransformer doesn't return correct children after updating and optimising solr
index
> --------------------------------------------------------------------------------------------
>
>                 Key: SOLR-6700
>                 URL: https://issues.apache.org/jira/browse/SOLR-6700
>             Project: Solr
>          Issue Type: Bug
>          Components: update
>            Reporter: Bogdan Marinescu
>            Priority: Critical
>             Fix For: 4.10.5
>
>
> I have an index with nested documents. 
> {code:title=schema.xml snippet|borderStyle=solid}
>  <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"
/>
> <field name="entityType" type="int" indexed="true" stored="true" required="true"/>
> <field name="pName" type="string" indexed="true" stored="true"/>
> <field name="cAlbum" type="string" indexed="true" stored="true"/>
> <field name="cSong" type="string" indexed="true" stored="true"/>
> <field name="_root_" type="string" indexed="true" stored="true"/>
> <field name="_version_" type="long" indexed="true" stored="true"/>
> {code}
> Afterwards I add the following documents:
> {code}
> <add>
>   <doc>
>     <field name="id">1</field>
>     <field name="pName">Test Artist 1</field>
>     <field name="entityType">1</field>
>     <doc>
>         <field name="id">11</field>
>         <field name="cAlbum">Test Album 1</field>
> 	    <field name="cSong">Test Song 1</field>
>         <field name="entityType">2</field>
>     </doc>
>   </doc>
>   <doc>
>     <field name="id">2</field>
>     <field name="pName">Test Artist 2</field>
>     <field name="entityType">1</field>
>     <doc>
>         <field name="id">22</field>
>         <field name="cAlbum">Test Album 2</field>
> 	    <field name="cSong">Test Song 2</field>
>         <field name="entityType">2</field>
>     </doc>
>   </doc>
> </add>
> {code}
> After performing the following query 
> {quote}
> http://localhost:8983/solr/collection1/select?q=%7B!parent+which%3DentityType%3A1%7D&fl=*%2Cscore%2C%5Bchild+parentFilter%3DentityType%3A1%5D&wt=json&indent=true
> {quote}
> I get a correct answer (child matches parent, check _root_ field)
> {code:title=add docs|borderStyle=solid}
> {
>   "responseHeader":{
>     "status":0,
>     "QTime":1,
>     "params":{
>       "fl":"*,score,[child parentFilter=entityType:1]",
>       "indent":"true",
>       "q":"{!parent which=entityType:1}",
>       "wt":"json"}},
>   "response":{"numFound":2,"start":0,"maxScore":1.0,"docs":[
>       {
>         "id":"1",
>         "pName":"Test Artist 1",
>         "entityType":1,
>         "_version_":1483832661048819712,
>         "_root_":"1",
>         "score":1.0,
>         "_childDocuments_":[
>         {
>           "id":"11",
>           "cAlbum":"Test Album 1",
>           "cSong":"Test Song 1",
>           "entityType":2,
>           "_root_":"1"}]},
>       {
>         "id":"2",
>         "pName":"Test Artist 2",
>         "entityType":1,
>         "_version_":1483832661050916864,
>         "_root_":"2",
>         "score":1.0,
>         "_childDocuments_":[
>         {
>           "id":"22",
>           "cAlbum":"Test Album 2",
>           "cSong":"Test Song 2",
>           "entityType":2,
>           "_root_":"2"}]}]
>   }}
> {code}
> Afterwards I try to update one document:
> {code:title=update doc|borderStyle=solid}
> <add>
> <doc>
> <field name="id">1</field>
> <field name="pName" update="set">INIT</field>
> </doc>
> </add>
> {code}
> After performing the previous query I get the right result (like the previous one but
with the pName field updated).
> The problem only comes after performing an *optimize*. 
> Now, the same query yields the following result:
> {code}
> {
>   "responseHeader":{
>     "status":0,
>     "QTime":1,
>     "params":{
>       "fl":"*,score,[child parentFilter=entityType:1]",
>       "indent":"true",
>       "q":"{!parent which=entityType:1}",
>       "wt":"json"}},
>   "response":{"numFound":2,"start":0,"maxScore":1.0,"docs":[
>       {
>         "id":"2",
>         "pName":"Test Artist 2",
>         "entityType":1,
>         "_version_":1483832661050916864,
>         "_root_":"2",
>         "score":1.0,
>         "_childDocuments_":[
>         {
>           "id":"11",
>           "cAlbum":"Test Album 1",
>           "cSong":"Test Song 1",
>           "entityType":2,
>           "_root_":"1"},
>         {
>           "id":"22",
>           "cAlbum":"Test Album 2",
>           "cSong":"Test Song 2",
>           "entityType":2,
>           "_root_":"2"}]},
>       {
>         "id":"1",
>         "pName":"INIT",
>         "entityType":1,
>         "_root_":"1",
>         "_version_":1483832916867809280,
>         "score":1.0}]
>   }}
> {code}
> As can be seen, the document with id:2 now contains the child with id:11 that belongs
to the document with id:1. 
> I haven't found any references on the web about this except http://blog.griddynamics.com/2013/09/solr-block-join-support.html
> Similar issue: SOLR-6096
> Is this problem known? Is there a workaround for this? 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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


Mime
View raw message