我有q
queryString = "select?wt=json&rows=0&indent=true&facet=true&q=*:*&facet=true&facet.field=outcome_type"
如果查询如下:
http://x.x.x.x:8983/solr/abc/queryString
它有效。这里abc是核心。
现在我想以编程方式执行它,并使用以下方法:
SolrQuery query = new SolrQuery();
query.setQuery(queryString);
QueryResponse resp = server.query(query);
这里的queryString如上所定义,但它返回以下错误:
线程“main”中的异常 org.apache.solr.client.solrj.impl.HttpSolrServer $ RemoteSolrException: 未定义的字段文本
我在这里缺少什么?或者我需要通过set functions构建查询?
答案 0 :(得分:2)
我认为你的试探性问题很少。
您不应使用setQuery
方法传递整个查询字符串。对于查询字符串中几乎每个参数,SolrQuery
类中都有相应的方法。
SolrQuery
不支持json
格式,SolrJ仅支持javabin
和xml
格式,我建议不要指定任何wt
参数
因此,您应该仅对setQuery
参数使用q
方法:
query.setQuery("*:*");
对于其余参数,最简单的方法是使用add
方法:
query.add("rows", "0"); // instead of setRows(0)
query.add("indent", "true");
query.add("facet", "true"); // ... setFacet(true)
query.add("facet.field", "outcome_type"); // ... addFacetField("outcome_type")
希望这有帮助
答案 1 :(得分:0)