我在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''
我尝试将范围部分包装在附加括号中,但仍然没有运气。如何将范围函数与其他查询参数组合在一起?
答案 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")
我的问题已经解决了,但是如果有人知道更好的方法,我会在几天内不予回答。
答案 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"