2016-12-14 3 views
0

Ich versuche, Auto-Vervollständigung mit Solrs Spellcheck-Antwort zu implementieren. Ich bin in der Lage, die Antwort für die angegebene Abfrage zu erhalten, aber ich bin nicht in der Lage, die vorgeschlagenen Begriffe zu einer Liste von Zeichenfolgen in Solrj zu bekommen.Wie bekomme ich die Spellcheck-Antwort als Liste <String> in SolrJ

Solr Antwort:

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

SolrJ Code:

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

Ich versuche, die vorgeschlagenen Wörter in eine Liste von Strings zu bekommen, aber nicht in der Lage, eine Lösung zu finden.

Vielen Dank im Voraus.

Antwort

1

Sie sind fast da. Sobald Sie die QueryRespnse erhalten, müssen Sie die SpellCheckResponse extrahieren und dann in der folgenden Art und Weise, die Vorschläge von dort erhalten:

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

es ist erwähnenswert, dass Sie auch die Möglichkeit, sich Anregungen in einer Karte als:

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

Sobald Sie den Vorschlag, die Sie (iterieren über die Liste oder sich um den Wert von der Karte) möchten, können Sie die Liste der Alternativen erhalten Sie diesen Code verwenden:

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

Th viel für die Antwort. –

+0

Ich habe versucht, die Solr.SuggesterComponent und war in der Lage, die sueggstions zu bekommen. –

Verwandte Themen