【问题标题】:Lucene QueryParser - produce a "portable" query to send to SOLRLucene QueryParser - 生成一个“便携式”查询发送到 SOLR
【发布时间】: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 作为其默认布尔运算符...还有其他建议吗?

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

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

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

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

    更多详情请见SolrQuerySyntax

    【讨论】:

    • 谢谢。实际上,我在发布之前通读了 SolrQuerySyntax 页面,但错过了其中的q.op=AND sn-p。
    • 这个答案确实解决了我的问题,但对我来说并没有我希望的那么有用。我的 web 服务在将搜索查询传递给 SOLR 之前对其进行了清理,因此不幸的是,我必须对其进行更改才能使用这些参数之一。我很沮丧原来的布尔查询是明确的并且不依赖于默认运算符,并且当它被解析时我失去了这种“明确性”。哦,好吧...
    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    相关资源
    最近更新 更多