【发布时间】:2011-11-20 22:30:10
【问题描述】:
继续我之前的问题:
Manipulate Lucene query before performing search
我遇到了一个问题,我想将 QueryParser 解析的 Query (Query.toString()) 发送到使用 SOLR 和默认运算符 AND 的 Web 服务上。因为 Lucene 将 OR 作为其默认运算符,所以任何 OR 的术语都将“按原样”保留。例如。给定查询:
(f1:cat OR f1:dog) AND f2:cow AND f3:"tree frog"
一旦解析(使用QuerParser.setDefaultOperator(QueryParser.Operator.AND)),字符串版本变为:
+(f1:cat f1:dog) +f2:cow +f3:"tree frog"
当这被传递给 SOLR 时,假设 AND 运算符,两个 f1 项得到 AND'ed 而不是 OR'ed。
我能想到的唯一解决方法是将我的 SOLR 安装更改为使用 OR 作为其默认布尔运算符...还有其他建议吗?
【问题讨论】: