将Solr范围功能与其他参数混合

时间:2013-05-14 13:53:27

标签: java solr

我在Solr fq中有一个按预期工作的范围函数:

{!frange l=1 u=2}sum(termfreq(tags,'twitter'),termfreq(tags,'facebook'),termfreq(tags,'pinterest'))

但是,如果我尝试通过在末尾添加一个额外的参数来进一步优化它:

{!frange l=1 u=2}sum(termfreq(tags,'twitter'),termfreq(tags,'facebook'),termfreq(tags,'pinterest')) AND (region:"US")

我收到错误: org.apache.solr.search.SyntaxError:函数后面的意外文本:AND(区域:“US”)

如果我尝试添加一个额外的参数:

(region:"US") AND {!frange l=1 u=2}sum(termfreq(tags,'twitter'),termfreq(tags,'facebook'),termfreq(tags,'pinterest'))

我收到错误: org.apache.solr.search.SyntaxError:预期')'在第27位的'sum(termfreq(tags,'twitter''

我尝试将范围部分包装在附加括号中,但仍然没有运气。如何将范围函数与其他查询参数组合在一起?

3 个答案:

答案 0 :(得分:0)

好的,我解决了我需要的问题。基本上,我是从Solr管理仪表板运行命令。虽然我无法将上面的frange命令与fq中的其他查询混合,但我能够将frange命令放入q并保留其他查询fq

q: {!frange l=1 u=2}sum(termfreq(tags,'twitter'),termfreq(tags,'facebook'),termfreq(tags,'pinterest'))

fq: (region:"US") 

我回答了similar question here.

我的问题已经解决了,但是如果有人知道更好的方法,我会在几天内不予回答。

答案 1 :(得分:0)

请在此处查看我的答案:Nested functional range query with OR

使用查询 solr功能解决了这个问题。

答案 2 :(得分:-1)

您还可以继续添加fq=参数,这被视为AND,例如:

&fq={!frange l=1 u=2}sum(termfreq(tags,'twitter'),termfreq(tags,'facebook'),termfreq(tags,'pinterest'))&fq=region:"US"