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.