For any "improperly" named field (that don't use the java identifier
conventions), you simply need to use the field function with the field name
in apostrophes:
div(acc_curr_834_2-1900_tl,100000000)
becomes:
div(field('acc_curr_834_2-1900_tl'),100000000)
-- Jack Krupansky
-----Original Message-----
From: Marcin Rzewucki
Sent: Wednesday, March 19, 2014 8:13 AM
To: solr-user@lucene.apache.org
Subject: frange and field with hyphen
Hi everyone,
I got the following issue recently. I'm trying to use frange on a field
which has hyphen in name:
<lst name="params">
<str name="debugQuery">true</str>
<str name="indent">on</str>
<str name="q">*:*</str>
<str name="wt">xml</str>
<arr name="fq">
<str>
{!frange l=1 u=99999999999999}sub(if(100000000, div(acc_curr_834_2-1900_tl,
100000000), 0), 1)
</str>
</arr>
<str name="version">2.2</str>
</lst>
</lst>
I got the following error:
DEBUG - 2014-03-19 12:11:53.805; org.eclipse.jetty.servlet.ServletHandler;
chain=SolrRequestFilter->default
DEBUG - 2014-03-19 12:11:53.805;
org.eclipse.jetty.servlet.ServletHandler$CachedChain; call filter
SolrRequestFilter
ERROR - 2014-03-19 12:11:53.806; org.apache.solr.common.SolrException;
org.apache.solr.common.SolrException: undefined field: "acc_curr_834_2"
at
org.apache.solr.schema.IndexSchema.getField(IndexSchema.java:1172)
at
org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:361)
at
org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:223)
at
org.apache.solr.search.ValueSourceParser$11.parse(ValueSourceParser.java:174)
at
org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:352)
at
org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:223)
at
org.apache.solr.search.ValueSourceParser$73.parse(ValueSourceParser.java:775)
at
org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:352)
at
org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:223)
at
org.apache.solr.search.ValueSourceParser$18.parse(ValueSourceParser.java:252)
at
org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:352)
at
org.apache.solr.search.FunctionQParser.parse(FunctionQParser.java:68)
at org.apache.solr.search.QParser.getQuery(QParser.java:141)
at
org.apache.solr.search.SolrReturnFields.add(SolrReturnFields.java:285)
at
org.apache.solr.search.SolrReturnFields.parseFieldList(SolrReturnFields.java:112)
at
org.apache.solr.search.SolrReturnFields.<init>(SolrReturnFields.java:98)
at
org.apache.solr.search.SolrReturnFields.<init>(SolrReturnFields.java:74)
at
org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:122)
at
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:200)
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)
I checked this query on solr 4.5 and 4.7. It works only for fields without
hyphen in name.
Could it be a bug ? Otherwise, could you let me know what am I doing wrong ?
Kind regards.