如何在SolrJ中将Spellcheck响应作为List <string>

时间:2016-12-14 08:04:13

标签: java json solr solrj

我正在尝试使用Solr的Spellcheck响应来实现自动完成。 我能够获得给定查询的响应,但是我无法将建议的条件提供给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 个答案:

答案 0 :(得分: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();