我正在尝试运行以下查询:
/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。
答案 0 :(得分:1)
根据the code of the ValueSourceParser for QueryValueSource(第261行),query
的第二个参数只能是一个浮点数。因此3或4.5可行,但my_field
或ceil(1.0)
ValueSource
而不是常量不会。
我不知道你的用例是什么,但是max(query("{!dismax qf=text v='solr rocks'}"), my_field)
是否足够好? (如果my_field
具有正值,则结果只会与您在查询得分低于my_field
的值时尝试执行的操作不同)
否则,如果你真的需要这个功能,那么基于QueryValueSource实现你自己的函数应该相当容易,以便将ValueSource作为第二个参数而不是float。
答案 1 :(得分: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))
有点迂回的方式,但工作正常。