【问题标题】:Solrj with Solr SuggesterSolrj 与 Solr Suggester
【发布时间】:2015-04-13 16:40:02
【问题描述】:

使用 Solr Suggester 从 solrj 获取结果的正确方法是什么?

这是我的要求:

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

这似乎对我从响应中获得的对象进行了很多假设,并且很难预测错误。

还有比这更好更干净的方法吗?

【问题讨论】:

    标签: java solr solrj


    【解决方案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();
      

      查看link了解更多详情

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      相关资源
      最近更新 更多