2016-12-14 14 views
0

我想實現自動完成使用Solr的拼寫檢查響應。 我能夠得到給定查詢的響應,但我無法將建議的條款提供給Solrj中的字符串列表。如何獲得拼寫檢查響應列表<String>在SolrJ

Solr的響應:

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":1}, 
    "spellcheck":{ 
    "suggestions":[ 
     "stac",{ 
     "numFound":4, 
     "startOffset":0, 
     "endOffset":3, 
     "suggestion":["stack", 
      "stacking"]}]}} 

SolrJ代碼:

SolrClient solrClients=new HttpSolrClient.Builder("http://localhost:8983/solr/star/").build(); 
      SolrQuery sq = new SolrQuery(); 
      sq.setRequestHandler("/suggest"); 
      sq.set("spellcheck", true); 
      sq.set("spellcheck.dictionary", "suggestDictionary"); 
      sq.set("suggest.q",query); 
      sq.setQuery(query); 
      QueryResponse rsp = solrClients.query(sq); 

我想獲得建議的話到字符串列表,但無法找到一個解決方案。

在此先感謝。

回答

1

你快到了。一旦你的QueryRespnse,你需要提取SpellCheckResponse,然後在下面的方式從那裏得到的建議:

QueryResponse queryResponse = solrClients.query(sq); 
SpellCheckResponse spellCheckResponse = queryResponse.getSpellCheckResponse(); 
List<Suggestion> suggestions = spellCheckResponse.getSuggestions(); 

值得一提的是,你必須也越來越建議在地圖中的選項:

Map<String, Suggestion> suggestionsMap = spellCheckResponse.getSuggestionMap(); 

一旦你有你想要的(遍歷列表或地圖上所獲得的價值)的建議,你可以使用此代碼的替代品的清單:

List<String suggestedWords> = spellCheckResponse.getAlternatives(); 
+0

釷爲迴應提出了很多要求。 –

+0

我嘗試了Solr.SuggesterComponent並能夠獲得sugegstions。 –