2014-11-05 44 views
2

試圖排序,如果功能:如果(真的,due_register,0)SOLR,如果排序功能未能

得到了一個錯誤:

2014-11-05 22:03:21,208 [ERROR] <qtp101478235-372>@SolrException.java:120 null:java.lang.UnsupportedOperationException 
    at org.apache.lucene.queries.function.FunctionValues.doubleVal(FunctionValues.java:47) 
    at org.apache.lucene.queries.function.valuesource.IfFunction$1.doubleVal(IfFunction.java:83) 
    at org.apache.lucene.queries.function.ValueSource$ValueSourceComparator.copy(ValueSource.java:153) 
    at org.apache.lucene.search.TopFieldCollector$OneComparatorNonScoringCollector.collect(TopFieldCollector.java:86) 
    at org.apache.lucene.search.Scorer.score(Scorer.java:65) 
    at org.apache.lucene.search.ConstantScoreQuery$ConstantScorer.score(ConstantScoreQuery.java:256) 
    at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:621) 
    at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:297) 
    at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1606) 
    at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1394) 
    at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:475) 
    at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:459) 
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:214) 
    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:368) 
    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) 

如果我有同樣的條款,以佛羅里達州PARAM: FL =如果(真,due_register,0),due_register,存在(due_register)

I接收的後續結果:

"docs": [ 
    { 
    "due_register": "1414713600000", 
    "if(true,due_register,0)": "1414713600000", 
    "exists(due_register)": true 
    }, 
    { 
    "due_register": "", 
    "exists(due_register)": true 
    }, 
    { 
    "due_register": "", 
    "exists(due_register)": true 
    }, 
    { 
    "due_register": "", 
    "exists(due_register)": true 
    } 
] 

如果(真,due_register,0)完全錯過了當其空的,但在同一時間直接場和存在的功能工作正常

+0

是的,看起來像排序不適用於返回字符串的函數查詢。 – arun 2014-11-05 23:08:20

+0

順便說一句,我不知道你實際上想要做什麼。如果你提到,也許有人可以告訴你一個替代解決方案。 – arun 2014-11-05 23:09:02

+0

似乎你是對的,遷移此字段以解決問題。 – 2014-11-06 13:55:34

回答

2

爲@arun說,

looks like sorting does not work with function queries that return strings.

所以我遷移外地長類型而不是它的工作正常。