gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:45:22 25 4
gpt4 key购买 nike

我们使用了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com