如何在 Solr 中以 List<String> 的形式获取拼写检查响应

How to get the Spellcheck response as List<String> in SolrJ

我正在尝试使用 Solr 的拼写检查响应实现自动完成。 我能够获得给定查询的响应,但我无法获得建议到 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);

我正在尝试将建议的单词放入字符串列表中,但无法找到解决方案。

提前致谢。

你快到了。获得 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();