You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Varun Thacker (JIRA)" <ji...@apache.org> on 2018/06/06 22:56:00 UTC

[jira] [Updated] (SOLR-12457) Multi valued field sorting doesn't work on trie fields

     [ https://issues.apache.org/jira/browse/SOLR-12457?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Varun Thacker updated SOLR-12457:
---------------------------------
    Description: 
When I go to sort on a multi-valued field in a 2 shard collection, which has trie fields the query fails.

To reproduce , we need 2+ shards , some docs that don't have any value for the field and a "desc" sort criteria.

Here's my schema
{code:java}
<dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true" docValues="true"/>
<fieldType class="solr.TrieIntField" docValues="true" name="int" positionIncrementGap="0" precisionStep="0"/>

<dynamicField name="*_i" type="pint" indexed="true" stored="true" multiValued="true"/>
<fieldType name="pint" class="solr.IntPointField" docValues="true"/>

{code}
Now If I add a few docs
{code:java}
[
{"id" : "1", "test_is" : ["1", "2", "3", "4", "5"], "test_i" : ["1", "2", "3", "4", "5"]},
{"id" : "2", "test_is" : ["1", "2", "3", "4", "5"], "test_i" : ["1", "2", "3", "4", "5"]},
{"id" : "3", "test_is" : ["1", "2", "3", "4", "5"], "test_i" : ["1", "2", "3", "4", "5"]},
{"id" : "4"},
{"id" : "5"},
{"id" : "6"}
]{code}
Works:

[http://localhost:8983/solr/gettingstarted/select?q=*:*&sort=field(test_i,max)%20desc]

 

Doesn't Work:

[http://localhost:8983/solr/gettingstarted/select?q=*:*&sort=field(test_is,max)%20desc]

 

To be more clear when I say it doesn't work , the query throws and error and here's the stack trace for it:
{code:java}
ERROR - 2018-06-06 22:55:06.599; [c:gettingstarted s:shard2 r:core_node8 x:gettingstarted_shard2_replica_n5] org.apache.solr.common.SolrException; null:java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.lucene.util.BytesRef

        at org.apache.lucene.search.FieldComparator$TermOrdValComparator.compareValues(FieldComparator.java:561)

        at org.apache.solr.handler.component.ShardFieldSortedHitQueue$1.compare(ShardFieldSortedHitQueue.java:161)

        at org.apache.solr.handler.component.ShardFieldSortedHitQueue$1.compare(ShardFieldSortedHitQueue.java:153)

        at org.apache.solr.handler.component.ShardFieldSortedHitQueue.lessThan(ShardFieldSortedHitQueue.java:91)

        at org.apache.solr.handler.component.ShardFieldSortedHitQueue.lessThan(ShardFieldSortedHitQueue.java:33)

        at org.apache.lucene.util.PriorityQueue.upHeap(PriorityQueue.java:263)

        at org.apache.lucene.util.PriorityQueue.add(PriorityQueue.java:140)

        at org.apache.lucene.util.PriorityQueue.insertWithOverflow(PriorityQueue.java:156)

        at org.apache.solr.handler.component.QueryComponent.mergeIds(QueryComponent.java:924)

        at org.apache.solr.handler.component.QueryComponent.handleRegularResponses(QueryComponent.java:585)

        at org.apache.solr.handler.component.QueryComponent.handleResponses(QueryComponent.java:564)

        at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:423)

        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:177)

        at org.apache.solr.core.SolrCore.execute(SolrCore.java:2484)

        at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:720)

        at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:526){code}
 

  was:
When I go to sort on a multi-valued field in a 2 shard collection, which has trie fields the query fails.

To reproduce , we need 2+ shards , some docs that don't have any value for the field and a "desc" sort criteria.

Here's my schema
{code:java}
<dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true" docValues="true"/>
<fieldType class="solr.TrieIntField" docValues="true" name="int" positionIncrementGap="0" precisionStep="0"/>

<dynamicField name="*_i" type="pint" indexed="true" stored="true" multiValued="true"/>
<fieldType name="pint" class="solr.IntPointField" docValues="true"/>

{code}
Now If I add a few docs
{code:java}
[
{"id" : "1", "test_is" : ["1", "2", "3", "4", "5"], "test_i" : ["1", "2", "3", "4", "5"]},
{"id" : "2", "test_is" : ["1", "2", "3", "4", "5"], "test_i" : ["1", "2", "3", "4", "5"]},
{"id" : "3", "test_is" : ["1", "2", "3", "4", "5"], "test_i" : ["1", "2", "3", "4", "5"]},
{"id" : "4"},
{"id" : "5"},
{"id" : "6"}
]{code}
Works:

[http://localhost:8983/solr/gettingstarted/select?q=*:*&sort=field(test_i,max)%20desc]

 

Doesn't Work:

[http://localhost:8983/solr/gettingstarted/select?q=*:*&sort=field(test_is,max)%20desc]

 


> Multi valued field sorting doesn't work on trie fields
> ------------------------------------------------------
>
>                 Key: SOLR-12457
>                 URL: https://issues.apache.org/jira/browse/SOLR-12457
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>    Affects Versions: 7.1
>            Reporter: Varun Thacker
>            Priority: Major
>
> When I go to sort on a multi-valued field in a 2 shard collection, which has trie fields the query fails.
> To reproduce , we need 2+ shards , some docs that don't have any value for the field and a "desc" sort criteria.
> Here's my schema
> {code:java}
> <dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true" docValues="true"/>
> <fieldType class="solr.TrieIntField" docValues="true" name="int" positionIncrementGap="0" precisionStep="0"/>
> <dynamicField name="*_i" type="pint" indexed="true" stored="true" multiValued="true"/>
> <fieldType name="pint" class="solr.IntPointField" docValues="true"/>
> {code}
> Now If I add a few docs
> {code:java}
> [
> {"id" : "1", "test_is" : ["1", "2", "3", "4", "5"], "test_i" : ["1", "2", "3", "4", "5"]},
> {"id" : "2", "test_is" : ["1", "2", "3", "4", "5"], "test_i" : ["1", "2", "3", "4", "5"]},
> {"id" : "3", "test_is" : ["1", "2", "3", "4", "5"], "test_i" : ["1", "2", "3", "4", "5"]},
> {"id" : "4"},
> {"id" : "5"},
> {"id" : "6"}
> ]{code}
> Works:
> [http://localhost:8983/solr/gettingstarted/select?q=*:*&sort=field(test_i,max)%20desc]
>  
> Doesn't Work:
> [http://localhost:8983/solr/gettingstarted/select?q=*:*&sort=field(test_is,max)%20desc]
>  
> To be more clear when I say it doesn't work , the query throws and error and here's the stack trace for it:
> {code:java}
> ERROR - 2018-06-06 22:55:06.599; [c:gettingstarted s:shard2 r:core_node8 x:gettingstarted_shard2_replica_n5] org.apache.solr.common.SolrException; null:java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.lucene.util.BytesRef
>         at org.apache.lucene.search.FieldComparator$TermOrdValComparator.compareValues(FieldComparator.java:561)
>         at org.apache.solr.handler.component.ShardFieldSortedHitQueue$1.compare(ShardFieldSortedHitQueue.java:161)
>         at org.apache.solr.handler.component.ShardFieldSortedHitQueue$1.compare(ShardFieldSortedHitQueue.java:153)
>         at org.apache.solr.handler.component.ShardFieldSortedHitQueue.lessThan(ShardFieldSortedHitQueue.java:91)
>         at org.apache.solr.handler.component.ShardFieldSortedHitQueue.lessThan(ShardFieldSortedHitQueue.java:33)
>         at org.apache.lucene.util.PriorityQueue.upHeap(PriorityQueue.java:263)
>         at org.apache.lucene.util.PriorityQueue.add(PriorityQueue.java:140)
>         at org.apache.lucene.util.PriorityQueue.insertWithOverflow(PriorityQueue.java:156)
>         at org.apache.solr.handler.component.QueryComponent.mergeIds(QueryComponent.java:924)
>         at org.apache.solr.handler.component.QueryComponent.handleRegularResponses(QueryComponent.java:585)
>         at org.apache.solr.handler.component.QueryComponent.handleResponses(QueryComponent.java:564)
>         at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:423)
>         at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:177)
>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:2484)
>         at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:720)
>         at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:526){code}
>  



--
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