2016-01-24 19 views
0

我其Q正確使用SolrQuery的SetQuery函數中的String參數的用例?

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); 

這裏查詢字符串如上述定義,但它返回以下錯誤:

異常線程「main 「 org.apache.solr.client.solrj.impl.HttpSolrServer $ RemoteSolrException: 未定義字段文本

我在這裏錯過了什麼?或者我需要通過設置功能建立查詢?

回答

1

我看到你的暫定一些問題。

  1. 您不應該將整個查詢字符串與setQuery方法。對於查詢字符串中幾乎可用的每個參數,在SolrQuery類中都有相應的方法。

  2. SolrQuery不支持json格式,SolrJ只支持javabinxml格式,我建議不指定任何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") 

希望這有助於

0

我用下面的方法來執行查詢和它的工作:

SolrQuery query = new SolrQuery(); 
    query.setQuery(queryString); 
    query.setFacet(true); 
    query.set("wt", "json"); 
    query.set("indent",true); 
    query.setRows(0); 
    query.addFacetField("outcome_type"); 
    QueryResponse resp = server.query(query); 

enter image description here