[ https://issues.apache.org/jira/browse/SOLR-6357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14644680#comment-14644680 ]
Timothy Potter commented on SOLR-6357: -------------------------------------- Adding a unit test that uses the score join solution to fix this issue. > Using query time Join in deleteByQuery throws ClassCastException > ---------------------------------------------------------------- > > Key: SOLR-6357 > URL: https://issues.apache.org/jira/browse/SOLR-6357 > Project: Solr > Issue Type: Bug > Components: query parsers > Affects Versions: 4.9 > Reporter: Arcadius Ahouansou > Assignee: Timothy Potter > > Consider the following input document where we have: > - 1 Samsung mobile phone and > - 2 manufactures: Apple and Samsung. > {code} > [ > { > "id":"galaxy note ii", > "cat":"product", > "manu_s":"samsung" > }, > { > "id":"samsung", > "cat":"manufacturer", > "name":"Samsung Electronics" > }, > { > "id":"apple", > "cat":"manufacturer", > "name":"Apple Inc" > } > ] > {code} > My objective is to delete from the default index all manufacturers not having > any product in the index. > After indexing ( curl 'http://localhost:8983/solr/update?commit=true' -H > "Content-Type: text/json" --data-binary @delete-by-join-query.json ) > I went to > {code}http://localhost:8983/solr/select?q=cat:manufacturer -{!join > from=manu_s to=id}cat:product > {code} > and I could see only Apple, the only manufacturer not having any product in > the index. > However, when I use that same query for deletion: > {code} > http://localhost:8983/solr/update?commit=true&stream.body=<delete><query>cat:manufacturer > -{!join from=manu_s to=id}cat:product</query></delete> > {code} > I get > {code} > java.lang.ClassCastException: org.apache.lucene.search.IndexSearcher cannot > be cast to org.apache.solr.search.SolrIndexSearcher > at > org.apache.solr.search.JoinQuery.createWeight(JoinQParserPlugin.java:143) > at > org.apache.lucene.search.BooleanQuery$BooleanWeight.<init>(BooleanQuery.java:185) > at > org.apache.lucene.search.BooleanQuery.createWeight(BooleanQuery.java:526) > at > org.apache.lucene.search.BooleanQuery$BooleanWeight.<init>(BooleanQuery.java:185) > at > org.apache.lucene.search.BooleanQuery.createWeight(BooleanQuery.java:526) > at > org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:684) > at > org.apache.lucene.search.QueryWrapperFilter.getDocIdSet(QueryWrapperFilter.java:55) > at > org.apache.lucene.index.BufferedUpdatesStream.applyQueryDeletes(BufferedUpdatesStream.java:552) > at > org.apache.lucene.index.BufferedUpdatesStream.applyDeletesAndUpdates(BufferedUpdatesStream.java:287) > at > {code} > This seems to be a bug. > Looking at the source code, the exception is happening in {code} > @Override > public Weight createWeight(IndexSearcher searcher) throws IOException { > return new JoinQueryWeight((SolrIndexSearcher)searcher); > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org