Solr api在TrieDoubleField上为Range过滤器查询抛出Invalid Number错误

时间:2014-07-08 09:23:25

标签: solr

我有一个定义为double的价格字段(solr.TrieDoubleField)。当我使用solr客户端查询 fq =(价格:[0到4.79])时,它可以正常工作。

但是,当我使用solr api执行相同操作时,会显示以下错误

Caused by: org.apache.solr.common.SolrException: Invalid Number: [0 TO 4.79]
    at org.apache.solr.analysis.TrieTokenizer.reset(TrieTokenizerFactory.java:141)
    at org.apache.solr.parser.SolrQueryParserBase.newFieldQuery(SolrQueryParserBase.java:409)
    at org.apache.solr.parser.SolrQueryParserBase.getFieldQuery(SolrQueryParserBase.java:959)
    at org.apache.solr.parser.SolrQueryParserBase.handleBareTokenQuery(SolrQueryParserBase.java:765)
    at org.apache.solr.parser.QueryParser.Term(QueryParser.java:300)
    at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:186)
    at org.apache.solr.parser.QueryParser.Query(QueryParser.java:108)
    at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:190)
    at org.apache.solr.parser.QueryParser.Query(QueryParser.java:108)
    at org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:97)
    at org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:160)
    at org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:50)
    at org.apache.solr.search.QParser.getQuery(QParser.java:142)
    at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:160)
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:187)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1859)
    at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:150)
    at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:90)
    at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:301)

我正在使用solr 4.5

有关如何解决问题的任何想法?

1 个答案:

答案 0 :(得分:3)

显然查询参数在发送到独立的solr服务器之前被转义,因为它无法正确理解方括号