java - 使用“/suggest”处理程序时,solrj“org.apache.solr.common.util.SimpleOrderedMap 无法转换为 java.util.Map”异常
问题描述
尝试使用 /suggest 处理程序运行 solrj 程序时出现类转换异常。我能够从 Solr Admin UI 获得建议响应,但是当从 solrj 客户端尝试相同时,会出现上述异常。
solr-config.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">suggestfield</str>
<str name="suggestAnalyzerFieldType">text_general</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>
<str name="suggest.dictionary">mySuggester</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
schema.xml 包含该字段
<field name="suggestfield" type="text_general" indexed="true" stored="true"/>
这是多个字段的copyField。
java代码如下:
String url = "http://localhost:8983/solr/testwidget";
HttpSolrClient client = new HttpSolrClient.Builder(url).build();
client.setParser(new XMLResponseParser());
SolrQuery query = new SolrQuery();
query.setRequestHandler("/suggest");
query.setParam("suggest.build", true);
query.setParam("suggest", true);
query.setParam("suggest.dictionary", "mySuggester");
query.setParam("suggest.q", "acc");
QueryResponse response = client.query(query);
System.out.println(response.getSuggesterResponse().getSuggestedTerms());
例外情况如下:
Exception in thread "main" java.lang.ClassCastException: org.apache.solr.common.util.SimpleOrderedMap cannot be cast to java.util.Map
at org.apache.solr.client.solrj.response.QueryResponse.setResponse(QueryResponse.java:161)
at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:194)
at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:942)
at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:957)
at com.intellectdesign.canvas.solr.SolrjTest.main(SolrjTest.java:41)
解决方案
为建议者使用多值字段是否有意义?它建议哪一个?copyField 指令会将多个文本块放在一个字段中。
你想要什么结果?这种设计对我来说没有意义。
推荐阅读
- python-3.x - 在for循环中“解析时出现意外的EOF”?
- sql - 想要年、月、日不同列的周数
- visual-studio-code - Visual Studio Code 仅在从 Linux 上的项目文件夹启动时编译
- amazon-web-services - AWS CDK - 如何调试悬挂部署?
- arrays - 如何将序列转换为数组或 Swift 中的序列是否结束?
- google-apps-script - 谷歌表格剪切和粘贴脚本
- python - 有没有办法通过使用pickle、json等将“_tkinter.tkapp objects”写入文件?- 蟒蛇tkinter
- reactjs - 我在反应时遇到了无效的钩子调用
- java - 为多态类型层次结构杰克逊编写自定义反序列化器
- vue.js - 避免直接改变 prop,因为只要父组件重新渲染,该值就会被覆盖。(Vue路由器)