1

我正在实现一个类似 SQL 的查询解析器,它输出 Solr 查询。我知道 Solr/Lucene 查询与布尔查询并不完全相同,就像必须/不得/应该一样。但是我必须自动解析类似 SQL 的布尔查询,因为我们客户的接口已经采用了类似 SQL 的接口。

像“A and B”->“A and B”这样的简单解析是可以的,但是像“NOT(A and (B or C)) AND D”这样的解析,当 SolrServer 返回一个我没有返回的值时,我不知所措不打算。

我阅读了以下内容

http://lucene.472066.n3.nabble.com/Unexpected-boolean-query-behavior-td487306.html

但它似乎是 Lucene 的,我无法弄清楚如何将 lucene BooleanQuery 连接到 Solr。有人有好主意吗?

4

1 回答 1

0

如果您查看Lucene 查询语法文档,您应该能够确定布尔查询语法如何映射到本机 Lucene(和 Solr)查询语法。查看 Lucene 源代码也很有启发性(我知道 Lucene.NET 源代码从我在Lucene Does Not Create Parse Trees上的工作中非常易读)。

于 2013-01-15T21:35:34.563 回答