You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Alf Eaton <li...@hubmed.org> on 2007/10/24 18:22:49 UTC

Empty field error when boosting a dismax query using bf

I'm trying to use the bf parameter to boost a dismax query based on the value of a certain (integer) field. The trouble is that for some of the documents this field is empty (rather than zero), which means that there's an error when using the bf parameter:

-----
select?q=query+string&qf=body&qt=dismax&bf=intfield
-----

java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:468)
	at java.lang.Integer.parseInt(Integer.java:497)
	at org.apache.lucene.search.FieldCacheImpl$3.parseInt(FieldCacheImpl.java:148)
	at org.apache.lucene.search.FieldCacheImpl$7.createValue(FieldCacheImpl.java:261)
	at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:72)
	at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:244)
	at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:238)
	at org.apache.solr.search.function.IntFieldSource.getValues(IntFieldSource.java:50)
	at org.apache.solr.search.function.FunctionQuery$AllScorer.<init>(FunctionQuery.java:103)
	at org.apache.solr.search.function.FunctionQuery$FunctionWeight.scorer(FunctionQuery.java:81)
	at org.apache.lucene.search.BooleanQuery$BooleanWeight.scorer(BooleanQuery.java:233)
	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:143)
	at org.apache.lucene.search.Searcher.search(Searcher.java:118)
	at org.apache.lucene.search.Searcher.search(Searcher.java:97)
	at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:894)
	at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:810)
	at org.apache.solr.search.SolrIndexSearcher.getDocList(SolrIndexSearcher.java:701)
	at org.apache.solr.handler.DisMaxRequestHandler.handleRequestBody(DisMaxRequestHandler.java:319)
	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:78)
	at org.apache.solr.core.SolrCore.execute(SolrCore.java:811)
	at org.apache.solr.servlet.SolrServlet.doGet(SolrServlet.java:64)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:200)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)

-----

Is there a way round this?

alf

Re: Empty field error when boosting a dismax query using bf

Posted by Yonik Seeley <yo...@apache.org>.
On 10/24/07, Alf Eaton <li...@hubmed.org> wrote:
> I'm trying to use the bf parameter to boost a dismax query based on the value of a certain (integer) field. The trouble is that for some of the documents this field is empty (rather than zero), which means that there's an error when using the bf parameter:
> -----
> select?q=query+string&qf=body&qt=dismax&bf=intfield
> -----
>
> java.lang.NumberFormatException: For input string: ""

It looks like you are indexing a zero-length string for that field.
Instead, completely leave the field out.

In the future, we should probably have Solr remove (not index) empty
non-string fields.

-Yonik