我已经在Solr中配置了Askerer,通过使用以下URL,我可以获得结果。
但是要用SolrJ代码实现相同的目的,我在下面的代码段的第7行得到了下面的异常。
线程“主”中的异常java.lang.ClassCastException:org.apache.solr.common.util.SimpleOrderedMap无法转换为java.util.Map 在org.apache.solr.client.solrj.response.QueryResponse.setResponse(QueryResponse.java:161) 在org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:178) 在org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:942) 在org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:957) 在com.finder.testsearch.SolrJBeanSearcher.main(SolrJBeanSearcher.java:71)
代码:
SolrQuery suggestionQuery = new SolrQuery();
suggestionQuery.setRequestHandler("/suggest");
suggestionQuery.set("suggest", "true");
suggestionQuery.set("suggest.build", "true");
suggestionQuery.set("suggest.dictionary", "mySuggester");
suggestionQuery.set("suggest.q", "Hom");
QueryResponse suggestionResponse = solr.query(suggestionQuery);
SuggesterResponse suggesterResponse =
suggestionResponse.getSuggesterResponse();
Map<String,List<String>> suggestedTerms =
suggesterResponse.getSuggestedTerms();
List<String> suggestions = suggestedTerms.get("mySuggester");
下面是solrconfig.xml条目。
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">tagsList</str>
<str name="suggestAnalyzerFieldType">string</str>
<str name="buildOnStartup">false</str>
</lst>
</searchComponent>
<requestHandler name="/suggest" class="solr.SearchHandler"
startup="lazy" >
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
任何建议。
谢谢。
答案 0 :(得分:0)
SimpleOrderedMap与java.util.Map不相关,因此这就是您收到此错误的原因。
请参见https://lucene.apache.org/solr/6_0_0/solr-solrj/org/apache/solr/common/util/SimpleOrderedMap.html