Correct.  This is only a limitation of embedding a local-params style
subquery within lucene syntax.
The parser, not knowing the syntax of the embedded query, currently
assumes the query text ends at whitespace or other special punctuation
such as ")".

Original:
(({!join from=inner_id to=outer_id fromIndex=othercore}city:"Stara
Zagora")) AND (prod:214)

Some possible workarounds that should work:
&q={!join from=inner_id to=outer_id fromIndex=othercore}city:"Stara Zagora"
&fq=prod:214

&q=({!join from=inner_id to=outer_id fromIndex=othercore
v='city:"Stara Zagora"'} AND prod:214)

&q=({!join from=inner_id to=outer_id fromIndex=othercore v=$jq} AND prod:214)
&jq=city:"Stara Zagora"


-Yonik
http://heliosearch.org - solve Solr GC pauses with off-heap filters
and fieldcache


On Fri, Mar 21, 2014 at 1:54 PM, Jack Krupansky <j...@basetechnology.com> wrote:
> I suspect that this is a bug in the implementation of the parsing of
> embedded nested query parsers . That's a fairly new feature compared to
> non-embedded nested query parsers - maybe Yonik could shed some light. This
> may date from when he made a copy of the Lucene query parser for Solr and
> added the parsing of embedded nested query parsers to the grammar. It seems
> like the embedded nested query parser is only being applied to a single,
> white space-delimited term, and not respecting the fact that the term is a
> quoted phrase.
>
> -- Jack Krupansky
>
> -----Original Message----- From: Marcin Rzewucki
> Sent: Thursday, March 20, 2014 5:19 AM
> To: solr-user@lucene.apache.org
> Subject: Re: join and filter query with AND
>
>
> Nope. There is no line break in the string and it is not feed from file.
> What else could be the reason ?
>
>
>
> On 19 March 2014 17:57, Erick Erickson <erickerick...@gmail.com> wrote:
>
>> It looks to me like you're feeding this from some
>> kind of text file and you really _do_ have a
>> line break after "Stara
>>
>> Or have a line break in the string you paste into the URL
>> or something similar.
>>
>> Kind of shooting in the dark though.
>>
>> Erick
>>
>> On Wed, Mar 19, 2014 at 8:48 AM, Marcin Rzewucki <mrzewu...@gmail.com>
>> wrote:
>> > Hi,
>> >
>> > I have the following issue with join query parser and filter query. For
>> > such query:
>> >
>> > <str name="q">*:*</str>
>> > <str name="fq">
>> > (({!join from=inner_id to=outer_id fromIndex=othercore}city:"Stara
>> > Zagora")) AND (prod:214)
>> > </str>
>> >
>> > I got error:
>> > <lst name="error">
>> > <str name="msg">
>> > org.apache.solr.search.SyntaxError: Cannot parse 'city:"Stara': Lexical
>> > error at line 1, column 12. Encountered: <EOF> after : "\"Stara"
>> > </str>
>> > <int name="code">400</int>
>> > </lst>
>> >
>> > Stack:
>> > DEBUG - 2014-03-19 13:35:20.825;
>> org.eclipse.jetty.servlet.ServletHandler;
>> > chain=SolrRequestFilter->default
>> > DEBUG - 2014-03-19 13:35:20.826;
>> > org.eclipse.jetty.servlet.ServletHandler$CachedChain; call filter
>> > SolrRequestFilter
>> > ERROR - 2014-03-19 13:35:20.828; org.apache.solr.common.SolrException;
>> > org.apache.solr.common.SolrException: >
>> > org.apache.solr.search.SyntaxError:
>> > Cannot parse 'city:"Stara': Lexical error at line 1, column 12.  E
>> > ncountered: <EOF> after : "\"Stara"
>> >         at
>> >
>>
>> org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:179)
>> >         at
>> >
>>
>> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:193)
>> >         at
>> >
>>
>> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
>> >         at org.apache.solr.core.SolrCore.execute(SolrCore.java:1916)
>> >         at
>> >
>>
>> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:780)
>> >         at
>> >
>>
>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:427)
>> >         at
>> >
>>
>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:217)
>> >         at
>> >
>>
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
>> >         at
>> >
>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
>> >         at
>> >
>>
>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
>> >         at
>> >
>> > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>> >         at org.eclipse.jetty.server.Server.handle(Server.java:364)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
>> >         at
>> org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
>> >         at
>> > org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
>> >         at
>> >
>>
>> org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
>> >         at
>> >
>>
>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>> >         at
>> >
>>
>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>> >         at java.lang.Thread.run(Thread.java:744)
>> > Caused by: org.apache.solr.search.SyntaxError: Cannot parse
>> 'city:"Stara':
>> > Lexical error at line 1, column 12.  Encountered: <EOF> after : >
>> > "\"Stara"
>> >         at
>> >
>>
>> org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:159)
>> >         at
>> org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:50)
>> >         at org.apache.solr.search.QParser.getQuery(QParser.java:141)
>> >         at
>> >
>>
>> org.apache.solr.search.JoinQParserPlugin$1.parse(JoinQParserPlugin.java:93)
>> >         at org.apache.solr.search.QParser.getQuery(QParser.java:141)
>> >         at
>> >
>>
>> org.apache.solr.parser.SolrQueryParserBase.getLocalParams(SolrQueryParserBase.java:832)
>> >         at
>> org.apache.solr.parser.QueryParser.Clause(QueryParser.java:212)
>> >         at >
>> > org.apache.solr.parser.QueryParser.Query(QueryParser.java:107)
>> >         at
>> org.apache.solr.parser.QueryParser.Clause(QueryParser.java:189)
>> >         at >
>> > org.apache.solr.parser.QueryParser.Query(QueryParser.java:139)
>> >         at
>> org.apache.solr.parser.QueryParser.Clause(QueryParser.java:189)
>> >         at >
>> > org.apache.solr.parser.QueryParser.Query(QueryParser.java:107)
>> >         at
>> > org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:96)
>> >         at
>> >
>>
>> org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:152)
>> >        at
>> org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:50)
>> >         at org.apache.solr.search.QParser.getQuery(QParser.java:141)
>> >         at
>> >
>>
>> org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:168)
>> >         ... 31 more
>> > Caused by: org.apache.solr.parser.TokenMgrError: Lexical error at line >
>> > 1,
>> > column 12.  Encountered: <EOF> after : "\"Stara"
>> >         at
>> >
>>
>> org.apache.solr.parser.QueryParserTokenManager.getNextToken(QueryParserTokenManager.java:1197)
>> >         at
>> org.apache.solr.parser.QueryParser.jj_ntk(QueryParser.java:579)
>> >         at
>> org.apache.solr.parser.QueryParser.Clause(QueryParser.java:174)
>> >         at >
>> > org.apache.solr.parser.QueryParser.Query(QueryParser.java:107)
>> >         at
>> > org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:96)
>> >         at
>> >
>>
>> org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:152)
>> >         ... 47 more
>> >
>> > But the below query works fine:
>> > <str name="q">*:*</str>
>> > <arr name="fq">
>> > <str>
>> > {!join from=inner_id to=outer_id fromIndex=othercore}city:"Stara Zagora"
>> > </str>
>> > <str>prod:214</str>
>> > </arr>
>> >
>> > What is wrong ? Is it AND operator ?
>> > The only workaround I found is to skip double quotes and use question
>> mark
>> > instead of space:
>> > <str name="q">*:*</str>
>> > <str name="fq">
>> > (({!join from=inner_id to=outer_id
>> fromIndex=othercore}city:Stara?Zagora))
>> > AND (prod:214)
>> > </str>
>> >
>> > Then it works, but it's not the best solution. Any other ideas ?
>> > I kindly appreciate your help. Thanks.
>> >
>> > Regards.
>>
>

Reply via email to