2016-12-14 5 views
0

Solrのスペルチェック応答を使用して自動完成を実装しようとしています。 指定されたクエリの応答を取得できましたが、Solrjの文字列リストに提示された用語を取得できません。SolrJでリスト<String>としてスペルチェック応答を取得する方法

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

のTh応答のために多くをanks。 –

+0

私はSolr.SuggesterComponentを試して、sugegstionsを取得できました。 –

関連する問題