我编写了自定义函数查询,并将编译后的类和注册表添加到solrconfig.xml中。 我可以在字段列表中使用它并返回预期值:
/serch/query/myindex/q=*:*&fl=myfunc(field,'paramValue')
但是如果我在查询约束中使用我的自定义函数它不起作用:
/serch/query/myindex/q=myfunc(field,'paramValue'):value
那么,在查询约束中使用自定义函数的正确方法是什么?
答案 0 :(得分:0)
请参阅Wiki上的“Using Function Queries”。
- 通过LocalParams语法调用FunctionQParserPlugin,例如q = {!func} log(foo)*或者:将func设置为默认查询 类型,例如DEFTYPE = FUNC&安培; Q =日志(富)
- 在过滤查询中通过LocalParams语法调用FunctionRangeQParserPlugin,例如: fq = {!frange l = 0} sub(field1,field2)
- 使用具有显式类型FunctionQuery的参数,例如DisMaxQParserPlugin的bf(boost函数)参数,或者扩展 dismax boost参数(乘法提升)。
- 通过_val_ hook
在SolrQuerySyntax中表示的常规查询中嵌入FunctionQuery
第二个选项允许您在fq
中使用该函数(如果函数返回数值,则至少非常直接)。