0

我在 tomcat 上运行 lucene solr 1.4。

我有一个定义为int类型的字段 id ,它映射到solr.TrieIntField

当我执行?q=id:a之类的 solr 查询时,我得到一个NumberFormatException

是否可以将 solr 配置为返回上述场景的空结果集而不是抛出异常?

4

2 回答 2

1

为什么必须将其作为 TrieIntField?不能用吗?它们都是非标记化字段(org.apache.solr.schema.FieldType)的子类。

更新: 根据你原来的问题,因为它是关于 id 的,我建议使用字符串,因为在这种情况下没有区别。但是,如果其他字段使用 TrieIntField 类型,则对这些字段使用字符串的缺点是您的排序和范围查询可能基于字符串,并且可能是不可取的。在这种情况下,您需要防止客户端 API 中的原始问题,或者您需要通过编写自己的处理程序来更好地处理它们。Solr 通过提供错误来做正确的事情,因为大多数应用程序会捕获此错误并以更好的用户错误消息响应用户。如果 solr 没有返回任何结果而不是错误,那么它会产生误导。

于 2013-12-24T18:49:22.370 回答
0

Solr 是用 Java 编写的,所以它是预期的。您必须从客户端(或 API 层)过滤掉非整数值,或者按照 Arun 的建议使用字符串类型。

于 2013-12-24T17:32:25.087 回答