1

我正在尝试运行以下查询:

/solr/select?q=_val_:query("{!dismax qf=text v='solr rocks'}", my_field)

但是,指定my_field为默认值会引发错误:

java.lang.NumberFormatException: For input string: "my_field"

此外,这些查询也会失败:

/solr/select?q=_val_:query("{!dismax qf=text v='solr rocks'}", ceil(my_field))
/solr/select?q=_val_:query("{!dismax qf=text v='solr rocks'}", ceil(1.0))

我们不能在函数查询中指定另一个字段或函数作为默认值吗?还有另一种方法可以完成我想做的事情吗?

我正在使用 Solr 3.1。

4

2 回答 2

1

根据QueryValueSource 的 ValueSourceParser 的代码(第 261 行), 的第二个参数query只能是浮点数。所以 3 或 4.5 会起作用,但是my_fieldor ceil(1.0)which are ValueSources 而不是 constants 不会。

我不知道您的用例是什么,但是服用max(query("{!dismax qf=text v='solr rocks'}"), my_field)就足够了吗?(如果my_field具有正值,则结果只会在查询的分数低于 的值时与您尝试执行的操作不同my_field

否则,如果您确实需要此功能,那么基于QueryValueSource实现您自己的函数应该相当容易,以便将 ValueSource 作为第二个参数而不是浮点数。

于 2012-04-19T21:48:54.800 回答
0

我确实找到了一种模拟所需逻辑的替代方法:

/solr/select?q=_val_:sum(query("{!dismax qf=text v='solr rocks'}"),product(map(query("{!dismax qf=text v='solr rocks'}",-1),0,100,0,1), my_field))

有点迂回的方式来做到这一点,但工作正常。

于 2012-04-20T14:22:33.963 回答