如何在查询约束中使用solr自定义FunctionQuery?

时间:2015-02-01 09:58:59

标签: solr lucene

我编写了自定义函数查询,并将编译后的类和注册表添加到solrconfig.xml中。 我可以在字段列表中使用它并返回预期值:

/serch/query/myindex/q=*:*&fl=myfunc(field,'paramValue') 

但是如果我在查询约束中使用我的自定义函数它不起作用:

/serch/query/myindex/q=myfunc(field,'paramValue'):value

那么,在查询约束中使用自定义函数的正确方法是什么?

1 个答案:

答案 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中使用该函数(如果函数返回数值,则至少非常直接)。