【发布时间】:2014-05-13 12:37:27
【问题描述】:
我想知道是否有设置条件提升的方式/方法
例如: if( category:1 )( field_1^1.5 field_2^1.2 )else if( category:3 )( field_3^7.5 field_4^5.2 )
我打算这样设置“qf”和“pf”参数以提高我的结果,可以吗?
【问题讨论】:
标签: php apache search solr search-engine
我想知道是否有设置条件提升的方式/方法
例如: if( category:1 )( field_1^1.5 field_2^1.2 )else if( category:3 )( field_3^7.5 field_4^5.2 )
我打算这样设置“qf”和“pf”参数以提高我的结果,可以吗?
【问题讨论】:
标签: php apache search solr search-engine
从概念上讲 - 是的,它可以使用函数查询 (http://wiki.apache.org/solr/FunctionQuery) 来完成,它包含 if 函数,但我自己无法做到这一点,因为我无法使用 == 运算符。
另外,您可以编写自己的函数查询。
但无论如何,现在它更像是一个很好的起点,而不是具体的答案。
【讨论】:
我认为你有两种方法可以做到这一点......
这将允许您在没有任何条件的情况下立即使用“pf”,因为您已经在索引时指定了条件,并根据类别对文档进行了不同的索引。这样做的问题是,您将无法根据类别更改字段的提升值分数,但无论如何这是一种更简单的方法
使用_val_或bq参数来指定一个boost查询,同样的查询可以不同的写法,所以可以写成如下相同的条件:
url?q=query AND _val_:"(category:1 AND (field_1:query OR field_2:query)) OR (category:3 AND field_2:query)"
这里的小问题也是你在每个内部查询中重复查询文本,这不是什么大问题。
【讨论】:
bq="(category:1 AND (field_1:query OR field_2:query)) OR (category:3 AND field_2:query)"