我正在实现一个类似SQL的查询解析器,它输出Solr查询。 我知道Solr / Lucene查询与布尔查询不完全相同,就像MUST / MUST NOT / SHOULD一样。 但我必须自动解析类似SQL的布尔查询,因为我们客户的接口已经采用了类似SQL的接口。
简单解析,如“A和B” - > “A和B”是可以的,但是如“NOT(A和(B或C))和D”,当SolrServer返回一个我不想要的值时,我很茫然。
我阅读了以下内容
http://lucene.472066.n3.nabble.com/Unexpected-boolean-query-behavior-td487306.html
但它似乎是Lucene,我无法弄清楚如何将lucene BooleanQuery连接到Solr。 有没有人有好主意?
答案 0 :(得分:0)
如果查看Lucene Query Syntax documentation,您应该能够确定布尔查询语法如何映射到本机Lucene(和Solr)查询语法。查看Lucene源代码也很有启发性(我知道Lucene.NET源代码在我Lucene Does Not Create Parse Trees的工作中非常易读。)