solr - QueryResponse (SolrJ 5.0.0) 将 ClassCastException 从 String 返回到 NamedList for spellcheck.collat​​ion=true

标签 solr solrj

我们使用了 Solr,我们希望通过使用 SolrJ 从 Solr 获取 SpellCheck.collat​​e

  SolrQuery query = new SolrQuery(q);
   query.add("spellcheck", "on");
   query.add(SpellingParams.SPELLCHECK_Q, q);
   query.add(SpellingParams.SPELLCHECK_COUNT, "5");
   query.add(SpellingParams.SPELLCHECK_ALTERNATIVE_TERM_COUNT, "2");
   query.add(SpellingParams.SPELLCHECK_MAX_RESULTS_FOR_SUGGEST, "5");
   query.add(SpellingParams.SPELLCHECK_COLLATE, "true");
   query.add(SpellingParams.SPELLCHECK_BUILD, "true");
   query.set(SpellingParams.SPELLCHECK_COLLATE_EXTENDED_RESULTS, true);
   query.set(SpellingParams.SPELLCHECK_MAX_COLLATIONS, 2);

当我们尝试使用 Solr Admin GUI 时,拼写检查和排序规则返回正确,但是当我们从 QueryResponse 对象调用查询时,它返回错误

Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to org.apache.solr.common.util.NamedList

代码片段如下

QueryResponse rsp = new QueryResponse();
    try {
        rsp = server.query(query);
    }catch (Exception e) {
        e.printStackTrace();
    }

它看起来无法从拼写检查条目中的字符串解析为 namedList

附言。当我们删除 spellcheck.collat​​e=true 时,拼写检查正常工作(但没有整理)并且没有转换错误。

最佳答案

solrconfig.xml 中没有看到您的拼写检查器配置,我将不得不在这里做出一些有根据的猜测。

首先,我认为您可能想使用 SolrQueryset() 方法,但我不能 100% 确定您的版本是否提供该方法SolrJ 的。例如,这是我设置拼写检查查询的方式:

        // Set the spellcheck
        solrQuery.set("spellcheck", Boolean.TRUE);

        // Set the spellcheck_q parameter
        solrQuery.set(SpellingParams.SPELLCHECK_Q, searchTerm); 

如果 set() 方法不可用,此时我不会太担心。

其次,当您设置spellcheck 属性时,您希望使用true,而不是“on”。

如果这些都没有帮助,请从 solrconfig.xml 发布您的拼写检查器配置,我可能会提供更多帮助。

尽管如此,我已将您的代码复制粘贴到我当前的 Solr (5.2.1) 单元测试中,但无法重现错误。

关于solr - QueryResponse (SolrJ 5.0.0) 将 ClassCastException 从 String 返回到 NamedList for spellcheck.collat​​ion=true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33498056/

相关文章:

solr - 使用 Solr 进行语音搜索,用于巴西葡萄牙语

ruby-on-rails - 生产服务器上的 Sunspot/Solr

solr - 使用空格、连字符、大小写和标点符号的各种组合进行搜索

java - 有没有办法在solrj中动态更新数据索引而不需要重新启动EmbeddedSolrServer?

django - Solr 与 Django-Haystack : 'Cannot create tester'

solr中的SSL证书错误

java - Solr 搜索无法正常工作

java - Solr : How to Index a field in document as json field?

search - Solr - 示例拼写检查器不工作

solr - 为什么我只能将 665 个结果中的 10 个文档读入 solr 中的 beans