Solrj с Solr Suggester’ом

#java #solr

#java #solr #solrj

Вопрос:

Каков правильный способ получения результатов от solrj с помощью Solr Suggester?

Это моя просьба:

 SolrQuery query = new SolrQuery();
query.setRequestHandler("/suggest");
query.setParam("suggest", "true");
query.setParam("suggest.build", "true");
query.setParam("suggest.dictionary", "mySuggester");
query.setParam("suggest.q", "So");
QueryResponse response = server.query(query);
 

Однако мне было чрезвычайно сложно получить ответ. Способ, которым я получил ответ, заключается в следующем:

 NamedList obj = (NamedList)((Map)response.getResponse().get("suggest")).get("mySuggester");
SimpleOrderedMap obj2 = (SimpleOrderedMap) obj.get("So");
List<SimpleOrderedMap> obj3 = (List<SimpleOrderedMap>) obj2.get("suggestions");
 

Похоже, это многое говорит об объектах, которые я получаю из ответа, и будет трудно предвидеть ошибки.

Есть ли лучший и более чистый способ, чем этот?

Ответ №1:

Ответ №2:

Лучший вариант — получить его в виде списка, приведенный ниже код сработал для меня

     HttpSolrClient solrClient = new HttpSolrClient(solrURL);
    SolrQuery query = new SolrQuery();
    query.setRequestHandler("/suggest");
    query.setParam("suggest.q", "Ins");
    query.setParam("wt", "json");
    try {

        QueryResponse response = solrClient.query(query);
        System.out.println(response.getSuggesterResponse().getSuggestedTerms());
        List<String> types=response.getSuggesterResponse().getSuggestedTerms().get("infixSuggester");
        System.out.println(types);
    } catch (SolrServerException | IOException e) {
        e.printStackTrace();
    }
 

Ответ №3:

Вы можете получить предложения с помощью SpellCheckResponse , выполнив следующие действия

 SpellCheckResponse spellCheckResponse=response.getSpellCheckResponse();
 

Проверьте эту ссылку для получения более подробной информации

Комментарии:

1. Я пробовал, это не работает. Это не объект проверки орфографии. Это подсказчик cwiki.apache.org/confluence/pages/… что, я думаю, отличается.