Lucene QueryParser - 生成“便携式”查询以发送给SOLR

时间:2011-11-20 22:30:11

标签: solr lucene

继我之前的问题之后:

Manipulate Lucene query before performing search

我遇到了一个问题,我想将QueryParser已解析的QueryQuery.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作为其默认的布尔运算符......还有其他任何建议吗?

1 个答案:

答案 0 :(得分:2)

可以基于每个请求覆盖默认运算符。例如:

使用参数:http://solr/select?q=query&q.op=OR

或使用本地参数:http://solr/select?q={!lucene q.op=OR}query

有关详细信息,请参阅SolrQuerySyntax