继我之前的问题之后:
Manipulate Lucene query before performing search
我遇到了一个问题,我想将QueryParser
已解析的Query
(Query.toString()
)发送到使用SOLR且默认运算符为{{1}的Web服务上}}。因为Lucene将AND
作为其默认运算符,所以任何OR'ed项都“按原样”保留。例如。给出查询:
OR
解析后(使用(f1:cat OR f1:dog) AND f2:cow AND f3:"tree frog"
),String版本变为:
QuerParser.setDefaultOperator(QueryParser.Operator.AND)
当这个传递给SOLR时,使用假定的+(f1:cat f1:dog) +f2:cow +f3:"tree frog"
运算符,两个f1项接受AND而不是OR。
我能想到的唯一解决方法是更改我的SOLR安装,使用OR作为其默认的布尔运算符......还有其他任何建议吗?
答案 0 :(得分:2)
可以基于每个请求覆盖默认运算符。例如:
使用参数:http://solr/select?q=query&q.op=OR
或使用本地参数:http://solr/select?q={!lucene q.op=OR}query
有关详细信息,请参阅SolrQuerySyntax。